Ubuntu 16.04 下编译 default.aspx.cs 在 http://127.0.0.1/default.aspx 上失败的困惑

Ubuntu 16.04 下编译 default.aspx.cs 在 http://127.0.0.1/default.aspx 上失败的困惑

我想知道为什么当我在网络浏览器中输入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。为了纠正该错误,我被指示将类名更改@defaultabcdef两个位置:default.aspx 和default.aspx.designer.cs。

完成这些更改后,我使用 MonoDevelop Tamarin Studio 5.5 构建了 MyLinuxTest.csproj 并生成了 MyLinuxTest.dll,我使用 Run With Firefox 浏览器对其进行了测试,以便启动 xsp4,并且此时它可以正常运行。

接下来,我将 MyLinuxTest.dll 和 MyLinuxTest.dll.mdb 复制到我们生产环境的 bin 文件夹中。 [编辑我今天在 mono-project.com 常见问题解答文档中读到,这些文件需要使用rm MyLinuxTest.dll以下命令安装cp /home/frankc/Downloads/MyLinuxTest/MyLinuxTest/bin/MyLinuxTest*.* ..

此时,当我使用 Chrome Web 浏览器和 apache2 的 mod_mono_server4 像这样 http://127.0.0.1/default.aspx 时,我得到了 C# 编译器错误 临时 aspx.cs 无法编译,因为有一个 ASP 类方法 default_aspx已经定义了。如何修复这个令人困惑的 C# 编译器错误,以便 http://127.0.0.1/default.aspx 提供正确的 Web 内容?如果需要,我可以提供 ASP.NET 代码。是否应该将 default.aspx 和 default.aspx.cs 重命名为我在 HelloWorld.csproj 中成功使用的 Default.aspx 和 Defalt.aspx.cs ?另外,我应该怎么做才能从编译过程中恢复或删除default.aspx.designer.cs?

答案1

在尝试 @svick 的建议将我的类名从 @default 更改为 @normalName 后,我仍然收到以下错误消息和堆栈跟踪:

详细信息:找不到类型 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 软件包很重要。此外,有必要在 sudo apt-get install libapache2-mod-mono 之前安装 sudo apt-get install mono-apache-server4 因为软件包 mono-apache-server4 是一个libapache2-mod-mono 包的先决条件。

相关内容