簡體   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