웹 브라우저에 http://127.0.0.1/default.aspx를 입력할 때 Ubuntu Linux 16.04에서 default.aspx.cs(default.aspx.cs를 가리키는 코드 뒤에 있는 코드) 컴파일이 실패하는 이유를 알고 싶습니다. 또한 MyLinuxTest.csproj에는 default.aspx.designer.cs 파일이 있습니다. 이 파일은 Visual Studio에서 자동으로 생성되며 asps 및 asp.cs 파일에 작성된 코드에 대한 스캐폴드 역할을 합니다. 이는 자동으로 생성되므로 이 파일을 만지거나 변경해서는 안 됩니다.
오늘 www.monoproject.com FAQ에서 default.aspx.cs가 항상 컴파일된다는 내용을 읽었습니다. 며칠 전에 default.aspx.cs는 변경 시 한 번만 컴파일된다는 내용을 읽었습니다. 또한 Aspx CompilationMode 서버측 스크립팅 옵션인 Always, Auto 및 Never가 있다는 것도 읽었습니다. mod_mono_server4 프로세스의 올바른 컴파일 동작은 무엇입니까? 제가 사용한 용어를 수정해주세요.
이것이 내가 어제 한 일입니다. C# 규칙은 @로 시작하는 클래스 뒤에는 C# 키워드만 올 수 있다고 규정하기 때문입니다. 결과적으로 이라는 C# 클래스를 사용하면 MonoDevelop Xamarin Studio 5.5에서도 컴파일이 실패합니다 @default
. 오류를 수정하기 위해 클래스 이름을 default.aspx 및 default.aspx.designer.cs라는 두 위치 @default
로 변경하라는 지시를 받았습니다 abcdef
.
이러한 변경을 수행한 후 MonoDevelop Tamarin Studio 5.5를 사용하여 MyLinuxTest.csproj를 빌드하고 MyLinuxTest.dll을 생성했습니다. Run With Firefox 브라우저를 사용하여 xsp4를 시작하여 테스트했는데 이 시점에서는 제대로 작동했습니다.
다음으로 MyLinuxTest.dll과 MyLinuxTest.dll.mdb를 프로덕션 환경의 bin 폴더에 복사했습니다. [오늘 mono-project.com FAQ 문서에서 이러한 파일을 다음을 사용하여 rm MyLinuxTest.dll
설치 해야 한다는 내용을 읽었습니다.cp /home/frankc/Downloads/MyLinuxTest/MyLinuxTest/bin/MyLinuxTest*.* ..
이 시점에서 Chrome 웹 브라우저와 http://127.0.0.1/default.aspx와 같은 apache2의 mod_mono_server4를 사용하면 C# 컴파일러 오류가 발생합니다. 임시 aspx.cs는 ASP 클래스 메서드 default_aspx가 이미 정의되어 있기 때문에 컴파일할 수 없습니다. . http://127.0.0.1/default.aspx가 올바른 웹 콘텐츠를 제공하도록 혼란스러운 C# 컴파일러 오류를 어떻게 수정합니까? 필요한 경우 ASP.NET 코드를 제공할 수 있습니다. default.aspx 및 default.aspx.cs의 이름을 HelloWorld.csproj에서 성공적으로 사용하는 Default.aspx 및 Defalt.aspx.cs로 바꿔야 합니까? 또한 컴파일 프로세스에서 default.aspx.designer.cs를 복원하거나 삭제하려면 어떻게 해야 합니까?
답변1
내 클래스 이름을 @default에서 @normalName으로 변경하라는 @svick의 제안을 시도한 후에도 여전히 다음 오류 메시지와 스택 추적이 표시됩니다.
세부 정보: MyLinuxTest.@normalName 유형을 찾을 수 없습니다.
오류 소스: 파서
Error source file: /var/www/firstaspnet/default.aspx
Exception stack trace:
at System.Web.UI.BaseParser.ThrowParseException (System.String message, System.Object[] parms) <0x40c61680 + 0x00087> in <filename unknown>:0
at System.Web.UI.TemplateParser.SetBaseType (System.String type) <0x40c555c0 + 0x000cf> in <filename unknown>:0
at System.Web.UI.TemplateParser.ProcessMainAttributes (IDictionary atts) <0x40c5fa40 + 0x00bbf> in <filename unknown>:0
at System.Web.UI.TemplateControlParser.ProcessMainAttributes (IDictionary atts) <0x40c5ea50 + 0x00423> in <filename unknown>:0
at System.Web.UI.PageParser.ProcessMainAttributes (IDictionary atts) <0x40c5be30 + 0x02773> in <filename unknown>:0
at System.Web.UI.TemplateParser.AddDirective (System.String directive, IDictionary atts) <0x40c5b720 + 0x0019a> in <filename unknown>:0
at System.Web.UI.TemplateControlParser.AddDirective (System.String directive, IDictionary atts) <0x40c5b190 + 0x00523> in <filename unknown>:0
at System.Web.UI.PageParser.AddDirective (System.String directive, IDictionary atts) <0x40c5acb0 + 0x0046f> in <filename unknown>:0
at System.Web.Compilation.AspGenerator.GetInheritedType (System.String fileContents, System.String filename) <0x40c58000 + 0x003fd> in <filename unknown>:0
at System.Web.Compilation.AspGenerator.GetRootBuilderType (System.IO.Stream inputStream, System.String filename) <0x40c574a0 + 0x000bf> in <filename unknown>:0
at System.Web.Compilation.AspGenerator.CreateRootBuilder (System.IO.Stream inputStream, System.String filename) <0x40c572b0 + 0x0003b> in <filename unknown>:0
at System.Web.Compilation.AspGenerator.InitParser (System.IO.TextReader reader, System.String filename) <0x40c56760 + 0x00353> in <filename unknown>:0
at System.Web.Compilation.AspGenerator.Parse (System.IO.TextReader reader, System.String filename, Boolean doInitParser) <0x40c56360 + 0x00063> in <filename unknown>:0
at System.Web.Compilation.GenericBuildProvider`1[TParser].Parse () <0x40c4fbb0 + 0x000c3> in <filename unknown>:0
at System.Web.Compilation.GenericBuildProvider`1[TParser].GenerateCode () <0x40c4fae0 + 0x00016> in <filename unknown>:0
at System.Web.Compilation.GenericBuildProvider`1[TParser].GenerateCode (System.Web.Compilation.AssemblyBuilder assemblyBuilder) <0x40c4f8d0 + 0x0004c> in <filename unknown>:0
at System.Web.Compilation.BuildManager.GenerateAssembly (System.Web.Compilation.AssemblyBuilder abuilder, System.Web.Compilation.BuildProviderGroup group, System.Web.VirtualPath vp, Boolean debug) <0x40c4ecf0 + 0x002da> in <filename unknown>:0
문제를 해결하기 위해 찾은 것은 1) 모든 apache2, Mono 및 ASP.NET 패키지를 올바른 순서로 다시 설치하는 것입니다. 2) 클래스 이름을 @default에서 abc로 변경하는 것이었습니다.
apache2 패키지를 먼저 설치하는 것이 중요합니다. 또한 패키지 mono-apache-server4가 libapache2-mod-mono 패키지의 전제 조건이기 때문에 sudo apt-get install libapache2-mod-mono보다 먼저 sudo apt-get install mono-apache-server4를 설치해야 합니다.