我正在使用 C# 在 ASP.NET MVC 中开发一个网站。它在我的机器上运行良好,但是当我将它加载到生产服务器时,它会在尝试显示主页时产生错误。
该错误是由 ASP 系统正在使用 Visual Basic 编译 .ascx 页面这一事实引起的,当然,由于所有代码都在 C# 中,因此这不起作用。
我该如何解决?
我正在使用 C# 在 ASP.NET MVC 中开发一个网站。它在我的机器上运行良好,但是当我将它加载到生产服务器时,它会在尝试显示主页时产生错误。
该错误是由 ASP 系统正在使用 Visual Basic 编译 .ascx 页面这一事实引起的,当然,由于所有代码都在 C# 中,因此这不起作用。
我该如何解决?
您的生产应用程序的应用程序配置中是否包含以下内容?
<compiler language="c#;cs;csharp" extension=".cs" warningLevel="4" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
此外,您是否已验证您的母版页/视图包含
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<YourType>" %>
和
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<LoginPageView>" %>
语言规范?
我发现需要在web.config文件中指定默认的编译语言。
由于某种原因,这在我的项目(由 Visual Studio 模板构建)中没有指定。看起来,在本地运行时,ASP 系统正确推断出默认语言,但在远程服务器上运行时,它默认为 Visual Basic。
默认编译器语言设置如下:
<compilation
defaultLanguage="c#"
/>
其中编译标签位于配置标签中的 system.web 标签中。请注意,defaultLanguages 中有一个大写字母 L。另请注意,通常此标签已经存在,其中包含许多其他信息,您只需添加 defaultLanguage 属性。
我昨天遇到了这个问题,事实上...
在您的 .ascx 文件中,您需要在页面顶部包含具有适当语言属性的控制指令:
<%@ Control Language="C#" ... %>