繁体   English   中英

Windows Server 2008 R2上的.NET Framework 4 RTM

[英].NET Framework 4 RTM on Windows server 2008 R2

我刚刚在Windows SErver 2008 R2 x64上安装了.NET 4,并且我使用ASP.NET MVC应用程序获得了500内部服务器错误,该应用程序以前在3.5上运行正常。 该应用程序已从目标3.5升级到目标4,我今天在我的开发机器上进行了个人构建(在VS中更改 - 属性到.NET Framework 4)。

在服务器上,我通过Web Platform Installer自动安装了.NET Framework 4 Client profile和Full。 ASP.NET MVC 2也通过Platform Installer安装。 我在IIS中创建了一个新的.NET 4应用程序池,并将Web应用程序放入其中。

此外,我在web.config中关闭了自定义错误,但即使这样也没有显示详细错误 - 只是普通的IIS 7.5 500内部服务器错误。

有什么建议?

嗯,这是一个非常奇怪和有趣的问题..但我渴望尽可能多地提供帮助。 我目前使用Server 2008 R2获得了VPS,并且我已经安装了.NET 4 RTM和MVC 2。 不要以为我遇到了配置问题,但我不得不帮助设置其他人。

最初,您可以检查..在您的IIS管理器,Isapi和Cgi限制,你有.NET 4吗? 哪个版本? 他们启用了吗?

如果您转到IIS中的应用程序池,您的应用程序池是否已服务于.NET 4,即新版本? 仔细检查一下,您的应用程序池可能被设置为.NET 4框架的不同版本,此后已被删除/禁用。 您可以尝试使用新的干净应用程序池创建一个新网站,以测试它是否有效。

如果还没有任何工作,您可以尝试使用aspnet_regiis -i在IIS中重新注册.NET

如果这些都不起作用,我会尝试回来提供更多选项/想法

我通常通过在IIS上重新安装ASP.NET支持文件来解决这类问题。

  1. 使用管理员权限打开命令提示符(命令提示符,右键单击,以管理员身份运行)
  2. 输入:

    cd %WINDIR%\\Microsoft.NET\\Framework64\\v4.0.XX.XX

    aspnet_regiis -i

完成。 您可能需要打开IIS并将应用程序池重新分配给新创建的“ASP.NET 4.0集成”(或Classic)。

我的ASP.NET MVC应用程序也存在小的兼容性问题。 它可能是你有同样的问题。

我使用NoSessionControllerFactory来禁用基于如何在ASP.NET MVC中禁用会话状态的 SessionState http://billrob.com/archive/2009/07/15/asp-net-mvc-without-sessionstate.aspx 更新到.NET 4.0后,我的应用程序无法正常工作。 我还收到了500内部服务器错误。 在从Global.asax.csNoSessionControllerFactory进行小修改后,世界就可以了。 固定代码如下所示:

public class NoSessionControllerFactory: DefaultControllerFactory {
    protected override IController GetControllerInstance (RequestContext requestContext, Type controllerType) {
        if (controllerType != null) {
            var controller = base.GetControllerInstance (requestContext, controllerType);
            ((Controller)controller).TempDataProvider =
                new DummyTempDataProvider ();
            return controller;
        }
        else
            return null;
    }
}
public class DummyTempDataProvider: ITempDataProvider {
    public IDictionary<string, object> LoadTempData (ControllerContext controllerContext) {
        return new Dictionary<string, object> ();
    }
    public void SaveTempData (ControllerContext controllerContext,
        IDictionary<string, object> values) {
    }
}

该类将在Global.asax.cs中使用,如:

protected void Application_Start () {
    RegisterRoutes (RouteTable.Routes);

    // see https://stackoverflow.com/questions/884852/how-can-i-disable-session-state-in-asp-net-mvc
    ControllerBuilder.Current.SetControllerFactory (new NoSessionControllerFactory ());
}

我敢打赌,这是有问题的应用程序的配置问题。 ASP.NET 4的配置与3.5不同。

此外,请确保您的Web应用程序从.NET 4引用DLL,而不是.NET 3.5。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM