Default.aspx 與 IIS 6.0 和 .Net 4?
- 我們在 IIS 6.0 上部署了一個 .net 4 asp.net 站點。
- Default.aspx 被配置為預設文件之一。
- 當我們使用以下網址訪問網站時
http://testsite我們期望它渲染
http://testsite/Default.aspx但相反,我們得到
404 Not found error. 當它部署在 .Net 2.0 上時,我們沒有遇到這個問題。伺服器上唯一改變的是我們使用 .NET 4 而不是 .NET 2.0。更新:我嘗試了以下連結,但沒有成功。
伺服器上的框架版本是 .NET 4 RC。如果我們在伺服器上安裝最新的 .NET 4 版本會有幫助嗎?
**更新:**問題現已解決。問題是我們使用的第三方上傳控制項在 Web.Config 中添加了自己的 HttpHandler。此 HttpHandler 在 .NET 4 中開始失敗。
如果您在 IIS 6 Windows Server 上執行新的 .NET 4 框架,則會出現一些問題。IIS 6 不允許您同時在同一實例中執行多個框架,例如 IIS7,它可以創建針對不同框架的應用程序池。當 IIS 6 在 ASP.NET 2.0(3.0 和 3.5 是超集,而不是框架)下執行時,如果應用程序是 4.0,您將遇到此錯誤 配置錯誤描述:在處理服務此請求所需的配置文件期間發生錯誤. 請查看下面的具體錯誤詳細資訊並適當地修改您的配置文件。解析器錯誤消息:無法辨識的屬性“targetFramework”。請注意,屬性名稱區分大小寫。
Source Error: Line 11: </configSections> Line 12: <system.web> Line 13: <compilation debug="true" targetFramework="4.0"> Line 14: </compilation> Line 15: <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/> </ system.web>你有幾個選擇;
- 將 .NET 應用程序降級到 3.5,Visual Studio 2010 使它變得非常容易。只需轉到網站屬性-> 應用程序選項卡,然後有一個包含所有框架版本的下拉菜單,選擇 3.5,您 VS2010 將重新載入項目並修改 web.config,如果您添加了 Web 服務引用,您可能需要刪除它們並在 3.5 下重新添加它們
- 配置 IIS6 和 web 配置來解決問題。我處理第二部分:
- 在 IIS 6 控制台中,您需要右鍵點擊您的項目並點擊屬性並檢查 ASP.Net 選項卡是否選擇了 Framework 4。如果沒有選擇框架 4。
但是由於應用程序池,您仍然可能面臨同樣的錯誤;對於兩個不同的框架 Web 應用程序,您可能擁有相同的應用程序池。IIS 6 不允許您在同一實例中同時執行多個框架(意味著單個應用程序池不能用於兩個不同的框架),例如 IIS7,它可以創建針對不同框架的應用程序池。
- 要解決此問題,您需要創建應用程序池並將此應用程序池分配給您的框架 4 Web 應用程序。要分配應用程序池,請在 IIS 控制台中打開 Web 應用程序的屬性部分,然後點擊“主目錄”選項卡並從下拉列表中選擇您之前創建的應用程序池。
- 這兩個現在可能會在某個時候完全解決您的問題。您可能會收到“404 Page is not found”錯誤。儘管您現在在開發期間可能會遇到任何問題。
- 基本上找不到頁面問題是由 IIS6 設置隱藏的其他問題的原因。但是你需要看到真正的原因。您在這裡要做的是轉到 IIS6 控制台打開“Web 服務擴展節點”,它位於“預設網站”節點的正下方。您將在那裡看到整個 ASP.Net 框架列表,預設情況下這些框架可能被禁止,因此請選擇 ASP.Net Framework 4 並點擊允許按鈕。現在瀏覽您的網站,除了“404 頁面未找到”之外,您還會收到其他錯誤。您可能會收到如下所示的錯誤:
- 提供程序選項中“compilerVersion”屬性的值必須為“v4.0”瀏覽網站時會看到以下錯誤提供程序選項中“compilerVersion”屬性的值必須為“v4.0”或更高版本如果您正在為 .NET Framework 4.0 或更高版本進行編譯。要為 .NET Framework 3.5 或更早版本編譯此 Web 應用程序,請從 Web.config 文件的元素中刪除“targetFramework”屬性。要解決此問題,您需要修改您的 Web 配置文件,如下所示:
以前 CompilerVersion 值設置為 v3.5,但我們已經將 targetFranework 更改為 4。因此,根據上面的錯誤消息,提供程序選項中的“compilerVersion”屬性必須是“v4.0”或更高版本,如果您正在編譯版本.NET Framework 4.0 或更高版本。
Hence your new setting will be as below: <providerOption name="CompilerVersion" value="v3.5"/>希望這將解決您在 IIS6 上的 ASP.Net 4 遷移和託管問題。
這是一個更完整的解決方案和解釋的連結:
http://johan.driessen.se/archive/2010/04/13/getting-an-asp.net-4-application-to-work-on-iis6.aspx