Win7下VS20十、IIS7配置常見問題收集

一 在Win7下應按什麼次序安裝vs2010和iis7

    win7推薦先安裝iis7,再安裝vs2010;若是次序反了,必須註冊iis才能夠用。

    IIS中ASP.NET的版本號此時可選的有1.一、2.0和4.0三個,若是想讓IIS把3個版本都集成上,那NET Framework 3種都要安裝,默認安裝到的是C盤。IIS註冊方式以下: 

web

1.1:C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis.exe -i 
2.0:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i 
4.0:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i

二 安裝好 .NET 4 後仍是找不到設定網站站臺的 ASP.NET 頁籤的 ASP.NET 4.0 的選項

解決辦法:這問題一般出在先安裝 Microsoft .NET Framework 4 才安裝 IIS7,這時必須輸入如下指令將 ASP.NET 4.0 註冊進 IIS7 便可:

編程

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir -enable

三 爲VS2010安裝WEB項目部署工具(Webdeployment下載),在編譯過程當中提示錯誤:預編譯目標目錄不能與源程序目錄位於相同的樹中

解決方法:在新建部署工程時將工程目錄設置在項目源程序文件夾外的任意文件夾windows

四 IIS7配置錯誤因爲權限不足而沒法讀取配置文件

您不具有查看該目錄或頁面的權限,由於訪問控制列表 (ACL) 對 Web 服務器上的該資源進行了配置;


解決辦法:
  1> 設置IIS默認頁。
  2> 檢查iis是否設置了匿名可訪問。
  3> WEB項目對應的目錄安全性中添加IUSR及IIS_IUSRS用戶的權限。api

五 沒法向會話狀態服務器發出會話狀態請求

    當WEBCONFIG文件中設置SESSION存儲方式設置爲<sessionState mode="StateServer" />這種方式的時候,須要打開計算機管理--服務,開啓aspnet_state服務(ASP.NET狀態服務) ,若未開啓,就會出現如下錯誤:

數組

沒法向會話狀態服務器發出會話狀態請求。請確保 ASP.NET State Service (ASP.NET 狀態服務)已啓動,而且客戶端端口與服務器端口相同。若是服務器位於遠程計算機上,請檢查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值,確保服務器接受遠程請求。若是服務器位於本地計算機上,而且上面提到的註冊表值不存在或者設置爲 0,則狀態服務器鏈接字符串必須使用「localhost」或「127.0.0.1」做爲服務器名稱。

 

六 Win7安裝VS2010出錯

    Win7旗艦版上安裝VS2010旗艦版過程當中提示2908錯誤,在安裝到Macro Tools或TFS模型時提示出錯,網上提供兩種解決辦法:

    1> Win7版本必須在7600.16385以上;(安裝前請確認系統版本,16385上已成功安裝)
    2> 先安裝VS2010 RC版,而後卸載,而後再安裝VS2010 正式版;(未驗證是否可行)

瀏覽器

七 訪問添加的Asp網站,返回以下錯誤

An error occurred on the server when processing the URL. Please contact the system administrator


緣由:這個是由於你的程序某處有錯誤而產生的。而且IIS沒有返回具體產生錯誤的緣由。
解決辦法:設置IIS

  1> 在左側的目錄樹中選擇你的網站,在右邊的IIS分類下,找到並打開「ASP」
  2> 展開「編譯\調試屬性」並設置「將錯誤發送到瀏覽器」爲True
  3> 將「啓用父路徑」選擇爲True緩存

 

2. 已知問題

2.1 安裝

2.1.1 Full Framework(安裝)

2.1.1.1 在安裝了 .NET Framework 4 的狀況下,修改 .NET Framework 3.5 後沒法加載類型「System.ServiceModel.Activation.HttpModule」

此問題可能由下列狀況引發:安全

  • 在安裝 .NET Framework 4 以後卸載 Windows 2003 Server 和 Windows XP 上的 .NET Framework 3.5。
  • 在安裝 .NET Framework 4 以後啓用 .NET Framework 3.0 WCF HTTP 激活。
  • 在安裝 .NET Framework 4 以後安裝或修復 .NET Framework 3.5。
  • 在已安裝預發行版本時安裝 .NET Framework 4 的當前版本。

錯誤的完整文本以下:服務器

未能從程序集「System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089」加載類型「System.ServiceModel.Activation.HttpModule」。網絡

說明:在執行當前 Web 請求的過程當中發生未經處理的異常。 有關錯誤和代碼中發出該錯誤的位置的更多信息,請查看堆棧跟蹤。

解決此問題的方法:

  • 在命令提示符處,定位到 %windows%\Microsoft.Net\Framework\<最新版本>\
  • 執行下面的命令:aspnet_regiis.exe /iru

2.1.1.2 在 Windows Vista、Windows Server 2008 和 Windows 7 上,卸載 .NET Framework 4 Beta 2 會致使未使用的「isapiCgiRestriction」項保留在 applicationHost.config 文件中

在啓用了 IIS 7 或 IIS 7.5 而且已安裝 .NET Framework 4 的計算機上,卸載 Beta 2 版本會致使未使用的「isapiCgiRestriction」項保留在 applicationHost.config 文件中。 這種狀況出如今 Windows Vista、Windows Server 2008 和 Windows 7 上。未使用的項不會影響 Web 服務器的功能。 較高版本的 .NET Framework 4 可安全地安裝在同一臺計算機上,由於後續安裝將會更新「isapiCgiRestriction」項。

解決此問題的方法:

從 applicationHost.config 文件中刪除未使用的「isapiCgiRestriction」項。 可是,因爲卸載後留下的這些項並不會影響產品功能或安裝較高版本的能力,所以此步驟不是必需的。

2.1.1.3 安裝 .NET Framework 4 後沒法安裝 .NET Framework 1.0

在安裝 .NET Framework 4 後沒法安裝 .NET Framework 1.0。  必須在安裝 .NET Framework 4 以前安裝 .NET Framework 1.0。

解決此問題的方法:

  1. 轉到控制面板,打開「程序和功能」。
  2. 卸載 .NET Framework 4 Extended。
  3. 卸載 .NET Framework 4 Client Profile。
  4. 安裝 .NET Framework 1.0。
  5. 安裝 .NET Framework 4。

2.1.1.4 .NET Framework 4 安裝程序安裝失敗

未能安裝 .NET Framework 4 安裝程序。

解決此問題的方法:

參考 .NET Framework 4 安裝程序疑難解答指南 (http://go.microsoft.com/fwlink/?LinkId=186690)

2.1.1.5 卸載 .NET Framework 4 後未完全刪除 Windows Presentation Foundation (WPF) 4 字體緩存服務 (Full Framework)

卸載 .NET Framework 4 後未完全刪除 Windows Presentation Foundation (WPF) 4 字體緩存服務 (Full Framework)。

注意:此問題對 .NET Framework 的 Full Framework 版本和 Client Profile 版本都會產生影響。

解決此問題的方法:

  1. 在管理員模式下打開命令窗口。
  2. 鍵入「sc delete WPFFontCache_v0400」

此時應顯示「[SC] DeleteService SUCCESS」。

刷新服務控制檯後不該顯示字體緩存。  若是刷新操做未解決此問題,請從新啓動計算機。

2.1.2 Client Profile(安裝)

2.1.2.1 安裝 .NET Framework 4 Client Profile 後沒法安裝 .NET Framework 1.0

在安裝 .NET Framework 4 Client Profile 後沒法安裝 .NET Framework 1.0。  必須在安裝 .NET Framework 4 Client Profile 以前安裝 .NET Framework 1.0。

解決此問題的方法:

  1. 轉到控制面板,打開「程序和功能」。
  2. 卸載 .NET Framework 4 Client Profile。
  3. 安裝 .NET Framework 1.0。
  4. 安裝 .NET Framework 4 Client Profile。

2.1.2.2 卸載 .NET Framework 4 後未完全刪除 Windows Presentation Foundation (WPF) 4 字體緩存服務 (Client Profile)

卸載 .NET Framework 4 後可能未完全卸載 WPF 字體緩存服務。 

儘管 WPF 字體緩存服務在卸載後再也沒法使用,但服務控制檯中仍會顯示「Windows Presentation Foundation 字體緩存 4.0.0.0」服務條目。

在 Windows Vista 和 Windows Server 2008 上,服務控制檯「描述」字段將會顯示:「<讀取描述失敗。 錯誤代碼: 2 >」。  在 Windows XP 和 Windows Server 2003 上,「描述」字段仍將會顯示正確的字符串。

從新安裝 .NET Framework 將會修復此問題。 尚不肯定是否還有任何其餘影響。

注意:此問題對 .NET Framework 的 Client Profile 版本和 Full Framework 版本都會產生影響。

解決此問題的方法:

  1. 在管理員模式下打開命令窗口。
  2. 鍵入「sc delete WPFFontCache_v0400」

此時應顯示「[SC] DeleteService SUCCESS」。

刷新服務控制檯後不該顯示字體緩存。  若是刷新操做未解決此問題,請從新啓動計算機。

2.1.2.3 .NET Framework 4 Client Profile 安裝程序安裝失敗

未能安裝 .NET Framework 4 Client Profile 安裝程序。

解決此問題的方法:

參考 .NET Framework 4 安裝程序疑難解答指南 (http://go.microsoft.com/fwlink/?LinkId=186690)

2.2 卸載

2.2.1 Full Framework(卸載)

2.2.1.1 在 Windows Vista、Windows Server 2008 和 Windows 7 上,卸載 .NET Framework 4 Beta 2 會致使未使用的「isapiCgiRestriction」項保留在 applicationHost.config 文件中

在啓用了 IIS 7 或 IIS 7.5 而且已安裝 .NET Framework 4 的計算機上,卸載 Beta 2 版本會致使未使用的「isapiCgiRestriction」項保留在 applicationHost.config 文件中。 這種狀況出如今 Windows Vista、Windows Server 2008 和 Windows 7 上。未使用的項不會影響 Web 服務器的功能。 較高版本的 .NET Framework 4 可安全地安裝在同一臺計算機上,由於後續安裝將會更新「isapiCgiRestriction」項。

解決此問題的方法:

從 applicationHost.config 文件中刪除未使用的「isapiCgiRestriction」項。 可是,因爲卸載後留下的這些項並不會影響產品功能或安裝較高版本的能力,所以此步驟不是必需的。

2.2.1.2 卸載 NET4 後未完全刪除 WPF 4.0 字體緩存服務 (Full Framework)

完全刪除此孤立的字體緩存服務的方法:

  1. 在管理員模式下打開命令窗口
  2. 輸入:「sc delete WPFFontCache_v0400」

此時應顯示:  「[SC] DeleteService SUCCESS」。

若是刷新服務控制檯,則此時不該顯示字體緩存。  若是刷新服務控制檯並未解決此問題,則可能須要從新啓動。

(注意:此問題適用於 Full Framework,與適用於 Client Profile 的 877240 自述文件問題相同)

解決此問題的方法:

完全刪除此孤立的字體緩存服務的方法:

  1. 在管理員模式下打開命令窗口
  2. 輸入:「sc delete WPFFontCache_v0400」

此時應顯示:「[SC] DeleteService SUCCESS」。

若是刷新服務控制檯,則此時不該顯示字體緩存。  若是刷新服務控制檯並未解決此問題,則可能須要從新啓動。

2.2.2 Client Profile(卸載)

2.2.2.1 卸載 NET4 後未完全刪除 WPF 4.0 字體緩存服務 (Client Profile)

從 Vista/XP/w2k3/W2k8 卸載 .NET 4.0 以後,未完全卸載 WPF 字體緩存服務。 

儘管 WPF 字體緩存服務在卸載後再也沒法使用,但服務控制檯中仍會存在並顯示「Windows Presentation Foundation 字體緩存 4.0.0.0」服務條目。

在 Vista 和 W2k8 上,服務控制檯「描述」字段將會顯示:「<讀取描述失敗。 錯誤代碼: 2 >」。  在 XP/w2k3 上,「描述」字段仍將會顯示正確字符串。

從新安裝 Framework 將會修復此問題。 尚不肯定是否還有任何其餘影響。

注意:Net4 Client Profile 和 NET4 Full Framework 同時存在此問題

解決此問題的方法:

完全刪除此孤立的字體緩存服務的方法:

  1. 在管理員模式下打開命令窗口
  2. 輸入:「sc delete WPFFontCache_v0400」

此時應顯示:「[SC] DeleteService SUCCESS」。

若是刷新服務控制檯,則此時不該顯示字體緩存。  若是刷新服務控制檯並未解決此問題,則可能須要從新啓動。

(注意:此問題適用於 Client Profile,與適用於 Full Framework 的 888322 自述文件問題相同)。 

2.3 產品問題

2.3.1 通常問題

2.3.1.1 可再發行語言包的位置不正確致使 ClickOnce 發佈失敗。

若是在「系統必備」對話框中選中「從與個人應用程序相同的位置下載系統必備組件」選項,並選擇如下任何組件做爲系統必備組件,則當使用簡體中文或繁體中文版本的 Visual Studio 2010 發佈應用程序時,可能會顯示生成錯誤:

 

  1. Microsoft .NET Framework 4(x86 和 x64)
  2. Microsoft .NET Framework 4 Client Profile(x86 和 x64)
  3. Microsoft Visual F# Runtime for .NET 2.0
  4. Microsoft Visual F# Runtime for .NET 4.0

 

對於「Microsoft .NET Framework 4 Client Profile(x86 和 x64)」,系統可能會顯示下面的生成錯誤:

「MSB3152: 系統必備的安裝位置未設置爲‘組件供應商的網站’,沒法在磁盤上找到項‘Microsoft .NET Framework 4 Client Profile (x86 和 x64)’中的文件‘DotNetFX40Client\dotNetFx40LP_Client_x86_x64cs.exe’。 有關詳細信息,請參見‘幫助’。」

解決此問題的方法:

若要在簡體中文版本中解決此問題,請按如下步驟操做:

    1. 導航到文件夾「%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40Client」。 對於 x64 操做系統,該路徑位於 %ProgramFiles(x86)% 下。
    2. 將 zh-Hans 文件夾複製到名爲 zh-chs 的新文件夾
    3. 導航到 zh-chs 文件夾。
    4. 在管理員模式下打開 Package.xml。
    5. 按以下方法將 >Culture< 的值更改成 zh-chs:

<String Name=」Culture」>zh-chs</String>

若要在繁體中文版本中解決此問題,請按如下步驟操做:

    1. 導航到文件夾「%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40Client」。 對於 x64 操做系統,該路徑位於 %ProgramFiles(x86)% 下。
    2. 將 zh-Hant 文件夾複製到名爲 zh-cht 的新文件夾
    3. 導航到 zh-cht 文件夾。
    4. 在管理員模式下打開 Package.xml。
    5. 按以下方法將 >Culture< 的值更改成 zh-cht:

<String Name=」Culture」>zh-cht</String>

2.3.1.2 ClickOnce 應用程序安裝的可再發行語言包不正確。

若是在「系統必備」對話框中選中「從組件供應商的網站上下載系統必備組件」選項,並選擇如下任何組件做爲系統必備組件,則當使用簡體中文或繁體中文版本的 Visual Studio 2010 發佈應用程序時,可能會沒法安裝簡體中文或繁體中文語言包:

 

  1. Microsoft .NET Framework 4(x86 和 x64)
  2. Microsoft .NET Framework 4 Client Profile(x86 和 x64)
  3. Microsoft Visual F# Runtime for .NET 2.0
  4. Microsoft Visual F# Runtime for .NET 4.0

 

解決此問題的方法:

若要在簡體中文版本中解決此問題,請按如下步驟操做:

    1. 導航到文件夾「%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40Client」。 對於 x64 操做系統,該路徑位於 %ProgramFiles(x86)% 下。
    2. 將 zh-Hans 文件夾複製到名爲 zh-chs 的新文件夾
    3. 導航到 zh-chs 文件夾。
    4. 在管理員模式下打開 Package.xml。
    5. 按以下方法將 >Culture< 的值更改成 zh-chs:

<String Name=」Culture」>zh-chs</String>

若要在繁體中文版本中解決此問題,請按如下步驟操做:

    1. 導航到文件夾「%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40Client」。 對於 x64 操做系統,該路徑位於 %ProgramFiles(x86)% 下。
    2. 將 zh-Hant 文件夾複製到名爲 zh-cht 的新文件夾
    3. 導航到 zh-cht 文件夾。
    4. 在管理員模式下打開 Package.xml。
    5. 按以下方法將 >Culture< 的值更改成 zh-cht:

<String Name=」Culture」>zh-cht</String>

2.3.2 ASP.NET

2.3.2.1 在 Windows 7 上安裝 .NET Framework 4 以後,沒法再在 IIS 7.5 上爲各個應用程序池配置 aspnet.config 文件

在運行 Windows 7 而且已啓用 IIS 7.5 的客戶端或服務器計算機上安裝 .NET Framework 4 以後,用於爲不一樣應用程序池配置 ASP.NET 配置文件的選項中止工做。 發生這種狀況的緣由是,安裝 .NET Framework 4 後致使公共語言運行時 (CLR) 初始化的默認行爲有了輕微改變。 當安裝 .NET Framework 4 時,Windows 7 上的 IIS 7.5 將調入本機 ASP.NET 4 DLL 以執行 CLR 初始化,而此初始化邏輯不容許使用不一樣的配置文件。

解決此問題的方法:

因爲 .NET Framework 4 和 IIS 7.5 的 CLR 初始化邏輯基本相同(配置文件反作用除外),所以您能夠從新配置 IIS 7.5,使其再也不將 CLR 初始化委託給 ASP.NET 4。能夠按如下兩種方式執行此操做。

方法 1
----------
在 IIS 7.5 applicationHost.config 文件中,將「managedRuntimeLoader」特性的默認值設置爲一個空字符串,如如下示例所示:

<applicationPools>
  <applicationPoolDefaults managedRuntimeLoader="" />
</applicationPools>

方法 2
----------
在 IIS 7.5 IIS_Schema.xml 文件中,將名爲「managedRuntimeLoader」的特性中的「defaultValue」設置爲一個空字符串。 例如,該特性最初可能相似於如下示例: 

<attribute name="managedRuntimeLoader" type="string" defaultValue="webengine4.dll" />

將該特性更改成如下標記:

<attribute name="managedRuntimeLoader" type="string" defaultValue="" />

2.3.2.2 在 Windows XP 和 Windows Server 2003 上註銷和從新註冊 ASP.NET 4 時,將會致使 IIS MMC 中 ASP.NET 屬性選項卡上的 ASP.NET 版本值爲空

在 Windows XP 和 Windows Server 2003(全部版本)上,若是您在從 IIS 中註銷 ASP.NET 4 後從新註冊它,IIS MMC 會在 ASP.NET 選項卡上的 ASP.NET 版本列表中顯示空值。 下列步驟序列將致使出現此問題:

  1. 使用 aspnet_regiis 的 ASP.NET 4 版本運行「aspnet_regiis -u」
  2. 使用 aspnet_regiis 的 ASP.NET 4 版本運行「aspnet_regiis -i -enable」

解決此問題的方法:

在 IIS MMC 的 ASP.NET 版本列表中,手動選擇所需的 ASP.NET 版本,而後單擊「應用」按鈕。

2.3.2.3 Windows Vista、Windows Server 2008 和 Windows 7 上的 ASP.NET 編譯任務可能因 IIS 輔助進程沒有對 Windows 臨時目錄的寫權限而失敗

因爲 IIS 輔助進程沒有對 Windows 臨時目錄 (%WINDOWS%\Temp) 的寫權限,Windows Vista、Windows Server 2008 和 Windows 7 上的某些 ASP.NET 編譯任務可能會失敗。 在嘗試編譯依賴於 WSDL 文件的 Web 服務引用等項目時,您可能會看到諸如「分析器錯誤消息: 沒法生成臨時類」這樣的錯誤。
 
若是計算機上啓用了 IIS 而且安裝了 .NET Framework 4,但還沒有啓用 ASP.NET 和 .NET 擴展性的功能,則會出現此錯誤。

解決此問題的方法:

方法 1
----------
爲 IIS 輔助進程賬戶顯式授予對於 Windows 臨時目錄 (%WINDOWS%\Temp) 的寫權限。 執行此操做的一種方法是,對一個包含輔助進程賬戶的組(如 IIS_IUSRS 組)授予寫訪問權限。
 
方法 2
---------
啓用 ASP.NET 和 .NET 擴展性的功能。 在 Windows 的「控制面板」中打開「程序」,而後在「程序和功能」下單擊「打開或關閉 Windows 功能」。 在「Windows 功能」對話框中,依次打開「Internet Information Services」、「萬維網服務」和「應用程序開發功能」節點。 啓用如下功能:

     .NET 擴展性
     ASP.NET

2.3.2.4 以部分信任運行網站時,嘗試加載在 GAC 中部署的預編譯的 Web 程序集會失敗並引起「SecurityException」異常

能夠經過使用 aspnet_compiler.exe 命令行工具來預編譯 ASP.NET 網站。 若是使用密鑰對生成的程序集進行簽名,則能夠在 GAC 中而不是網站的 Bin 文件夾中部署這些程序集。

在 ASP.NET 4 中,若是以部分信任運行的網站嘗試從 GAC 中加載程序集,則將引起「System.Security.SecurityException」異常。 出現這種狀況的緣由是,默認狀況下 ASP.NET 4 使用比早期版本的 ASP.NET 新的代碼訪問安全性 (CAS) 實現。 在新的 CAS 實現中,必須使用「SecurityTransparent」特性顯式標記在 GAC 中部署的預編譯和經簽名的程序集。

解決此問題的方法:

方法 1
--------
在編譯程序集以前,先使用「SecurityTransparent」特性對其進行標記,如如下示例所示:

[assembly:System.Security.SecurityTransparentAttribute]

方法 2
--------
按照「如何:爲預編譯網站建立帶有版本的程序集」(http://msdn.microsoft.com/en-us/library/ms228042.aspx) 一文所述,向網站的 Web.config 文件中添加「compilerOptions」設置。 做爲此過程的組成部分,將下面的行添加到「compilerOptions」設置所引用的 AssemblyInfo.vb 或 AssemblyInfo.cs 文件中:

[assembly:System.Security.SecurityTransparentAttribute]

方法 3
--------
建立一個包含如下特性的虛擬類庫:

[assembly:System.Security.SecurityTransparentAttribute]

將該類庫編譯到某個程序集,而後使用「copyattrs」選項對預編譯網站輸出運行 aspnet_merge.exe 命令行工具,如如下示例所示:

aspnet_merge c:\MyApplicationRootDirectory -copyattrs assemblyfile.dll

對於 DLL 名稱,使用經過「SecurityTransparent」特性標記的虛擬類庫的名稱。

方法 4
--------
經過在網站的 Web.config 文件中將「trust」元素的「legacyCasModel」特性設置爲「true」,臨時恢復爲舊的 CAS 模式,如如下示例所示:

<trust level="Medium" legacyCasModel="true"/>

在作出了此更改以後,建議您使用其餘選項之一將「SecurityTransparent」特性添加到預編譯的程序集。 而後,能夠移除「legacyCasModel」特性並在新的 CAS 模式下運行網站。

2.3.2.5 ASP.NET 和 WCF 應用程序可能沒法在 IIS 7 集成模式下啓動

若是將新配置節添加到 ASP.NET 或 Windows Communication Foundation (WCF) 應用程序的 Web.config 應用程序文件,則啓動在 IIS 7 集成模式下運行的應用程序將失敗。

例如,若是將 <standardEndpoints> 配置節添加到 WCF 應用程序的 Web.config 文件中,則將不會啓動在 IIS 7 集成模式下運行的應用程序。 而 IIS 7 將返回一個配置驗證錯誤,由於 IIS 7 配置系統沒法識別新的配置節。

解決此問題的方法:

針對此問題下載並安裝一個公開提供的修補程序。 http://support.microsoft.com/kb/958854 提供了此修補程序。 或者,您也能夠安裝包含該修補程序的 Windows Vista SP 2。  Windows 7 和 Windows Server 2008 R2 沒有此問題,由於這些操做系統已包含了必需的修補程序。

2.3.2.6 可能須要在 Windows Vista、Windows Server 200八、Windows 7 和 Windows Server 2008 R2 上從新註冊 ASP.NET 4

在計算機上安裝了 .NET Framework 4 以後,若是啓用 IIS 7/7.5 或 IIS7/7.5 .NET 擴展性功能,則必須從新註冊 ASP.NET 4。 當計算機上安裝有 .NET Framework 4 時,若是移除 .NET 擴展性功能,也必須從新註冊 ASP.NET 4。

對於以上兩種狀況,從新註冊是必需的,由於對於計算機上已存在更高版本的 .NET Framework 這一狀況,沒有設計針對 IIS7 和 IIS 7.5 以及 .NET 擴展性功能的操做系統安裝和卸載過程。

解決此問題的方法:

若要從新註冊 ASP.NET 4,請運行下面的命令:

          aspnet_regiis -iru -enable 

確保使用安裝在 .NET Framework 4 安裝目錄中的 aspnet_regiis.exe 版本。

2.3.2.7 管理遠程 Web 服務器時可能不顯示 ASP.NET 管理控制檯 (MMC) 選項卡

若是您在管理遠程 Web 服務器時在本地計算機上運行管理控制檯 (MMC),則可能不會顯示 ASP.NET 選項卡。 當您使用 IIS 6 管理工具遠程管理已安裝 ASP.NET 的 Web 服務器時,若是本地計算機正在運行 Windows Server 2008 x6四、Windows 7 或 Windows Server 2008 R2(x86 或 x64),則會發生此狀況。

解決此問題的方法:

沒有解決方法。

2.3.2.8 運行 ASP.NET 2.0 版的「aspnet_regiis -ua」時沒法註銷包括 ASP.NET 4 在內的其餘版本的 ASP.NET

在 Windows Vista、Windows Server 200八、Windows 7 或 Windows Server 2008 R2 上運行 ASP.NET 2.0 版的「aspnet_regiis -ua」命令將致使出現如下錯誤: 

          不支持該請求。

出現此錯誤的緣由是,ASP.NET 2.0 版的「aspnet_regiis」命令沒法檢測計算機上是否存在更高版本的 ASP.NET。

解決此問題的方法:

運行 ASP.NET 4 版的「aspnet_regiis -ua」命令以註銷計算機上的 ASP.NET 的全部版本。

2.3.2.9 在 Windows Server 2003 上運行「aspnet_regiis -i」不會以遞歸方式強制將虛擬目錄升級到 ASP.NET 4

對於 ASP.NET 2.0,「aspnet_regiis -i」命令以遞歸方式升級 Windows Server 2003 上的全部虛擬目錄以使用 ASP.NET 2.0。 對於 ASP.NET 4,Windows Server 2003 上的「aspnet_regiis -i」命令只將 IIS 6 的根目錄升級到 ASP.NET 4。若是將根目錄下的任何虛擬目錄顯式設置爲運行特定版本的 ASP.NET,則這些虛擬目錄將保留顯式設置的 ASP.NET 版本,而不是從根目錄繼承 ASP.NET 4 設置。

解決此問題的方法:

運行 ASP.NET 4 版本的如下任一命令:

          aspnet_regiis -s

          aspnet_regiis -r

這些命令強制按遞歸方式將全部虛擬目錄更新爲 ASP.NET 4。

2.3.2.10 註銷 ASP.NET 2.0 後中斷 ASP.NET 4 性能計數器

在已註冊 ASP.NET 4 的任一操做系統版本上註銷 ASP.NET 2.0 都會損壞 ASP.NET 4 的某些性能計數器註冊。發生此狀況的緣由是,ASP.NET 2.0 註銷過程沒法檢測計算機上是否安裝有更高版本的 ASP.NET。 所以,當您使用 ASP.NET 4 的某些性能計數器時,應用程序事件日誌中可能會顯示相似下面的錯誤: 

          「沒法在‘ASP.NET’服務的 DLL‘"%WINDOWS%\Microsoft.NET\Framework\v4.0.NNNNN\aspnet_perf.dll’中定位打開過程‘%pef_counter_name%’。」

          「‘ASP.NET’服務的性能計數器數據集合已禁用。緣由是該服務的性能計數器庫產生一個或多個錯誤。」

解決此問題的方法:

運行 ASP.NET 4 版的「aspnet_regiis -iru」命令。  這將從新註冊 ASP.NET 4 性能計數器。

2.3.2.11 SQL Server Express 用戶實例不適用於 IIS 6 或 IIS 7 下的 Web 應用程序項目或 IIS 7.5 下的應用程序

默認狀況下,依賴於 SQL Server Express 用戶實例的 ASP.NET 4 Web 項目和 Web 應用程序在如下情形下不適用:

  1. Web 應用程序項目 (WAP) 做爲虛擬目錄承載於任一版本的 IIS 上。  這是由於 SQL Server Express 用戶實例須要對用戶的 Documents 文件夾的特定文件權限,但默認 IIS 服務賬戶 (NETWORK SERVICE) 沒有這些權限。
  2. 網站承載於在 Windows 7 或 Windows Server 2008 R2 上運行的 IIS 7.5 中。 這是由於用於 IIS 7.5 應用程序池的默認安全憑據並不基於 NETWORK SERVICE。

解決此問題的方法:

有關如何解決這些問題的詳細信息,請參見如下位置的文章:  

          http://go.microsoft.com/fwlink/?LinkID=160102

2.3.2.12 當應用程序級 Web.config 文件中存在相關節時 ASP.NET 4 或 IIS 7 引起配置錯誤

在 ASP.NET 4 中,已大大減小了默認 Web.config 文件的大小。 所以,IIS 7(在 Windows Vista 和 Windows Server 2008 上)和 IIS 7.5(在 Windows Server 2008 R2 上)將引起配置錯誤。 確切的錯誤取決於操做系統上已安裝的更新和應用程序級 Web.config 文件中包含的配置信息的類型。

既未安裝修補程序 KB958854 也未安裝 SP2 的 Windows Vista SP1 或 Windows Server 2008 SP1。 在此配置中,IIS 7 配置系統經過比較應用程序級 Web.config 文件與 ASP.NET 2.0 machine.config 文件,錯誤地合併應用程序的託管配置。 爲此,.NET Framework 3.5 或 .NET Framework 4 中的應用程序級 Web.config 文件必須具備一個 <system.web.extensions> 配置節,這樣纔不會致使 IIS 7 驗證失敗。  未精確匹配隨 Visual Studio 2008 引入的原始樣板配置節定義的手動修改的應用程序級 Web.config 文件項將致使出現配置錯誤。 (由 Visual Studio 2008 生成的默認配置項將起做用。) 常見的問題是:手動修改的 Web.config 文件會遺漏各類配置節定義中的配置特性「allowDefinition」和「requirePermission」。 所以,應用程序級 Web.config 文件中的簡略配置節與 ASP.NET 4 machine.config 文件中的完整定義不匹配。 所以在運行時,ASP.NET 4 配置系統將引起配置錯誤。

安裝有修補程序 KB958854 的 Windows Vista SP二、Windows Server 2008 SP二、Windows 七、Windows Server 2008 R2 以及 Windows Vista SP1 和 Windows Server 2008 SP1。 在這種狀況下,IIS 7 和 IIS 7.5 本機配置系統會返回配置錯誤,由於該系統會針對爲託管配置節處理程序定義的「type」特性執行文本比較。 由於由 Visual Studio 2008 和 Visual Studio 2008 SP1 生成的全部 Web.config 文件在 <system.web.extensions> 及相關配置節的類型字符串中都顯示「3.5」,而且 ASP.NET 4 machine.config 文件在相同配置節的「type」特性中顯示「4.0」,因此在 Visual Studio 2008 或 Visual Studio 2008 SP1 中生成的應用程序在 IIS 7 和 IIS 7.5 中的配置驗證老是會失敗。

解決此問題的方法:

對於第一種狀況,經過包括 Visual Studio 2008 自動生成的 Web.config 文件中的樣板配置文本,更新應用程序級 Web.config 文件。

對於第二種狀況,從應用程序級 Web.config 文件中刪除或註釋掉全部 <system.web.extensions> 配置節定義和配置節組定義。

2.3.2.13 不曾向 System.Web.Hosting.IProcessHostPreloadClient.Preload 方法傳遞過任何參數數據

System.Web.Hosting.IProcessHostPreloadClient.Preload 方法採用一個字符串數組做爲輸入參數。 但沒法設置此數據,而且不曾在此參數中傳入任何信息。

解決此問題的方法:

早期的預覽版 IIS 7.5 自動啓動功能支持這樣一種方法,即配置一個或多個字符串值以傳入 ASP.NET 4 IProcessHostPerloadClient.Preload 方法。 可是,在最終發行 Windows 7 和 Windows Server 2008 R2 以前,已經移除了這一功能。

2.3.2.14 Windows Vista、Windows Server 200八、Windows 7 和 Windows Server 2008 R2 上的 IIS7/IIS7.5 .NET 擴展性功能未與 ASP.NET 4 集成

IIS 7 和 IIS 7.5 .NET 擴展性功能是「Windows 功能」對話框中提供的一個配置選項,用於安裝或卸載 IIS 7 或 IIS 7.5 功能。 該功能位於下面的節點中:

Internet Information Services  > 萬維網服務  > 應用程序開發功能  > .NET 擴展性 

在 Windows Vista、Windows Server 200八、Windows 7 和 Windows Server 2008 R2 上,.NET 擴展性功能隻影響 ASP.NET 2.0 與 IIS 7 或 IIS 7.5 的集成。 它對在 IIS 7 或 IIS 7.5 中註冊或註銷 ASP.NET 4 沒有影響。

解決此問題的方法:

若要管理 ASP.NET 4 與 IIS 7 或 IIS 7.5 的集成,請使用 ASP.NET 4 版的「aspnet_regiis.exe」命令。

2.3.2.15 運行在 IIS 6 上的 ASP.NET 2.0 應用程序可能生成相似「未能找到 System.Web.HttpException: Path '/[您的應用程序根]/eurl.axd/[值]'。」的錯誤

運行在 IIS 6 上的 ASP.NET 2.0 應用程序(在 Windows Server 2003 或 Windows Server 2003 R2 中)可能會生成相似下面的錯誤:

未能找到 System.Web.HttpException: Path '/[您的應用程序根]/eurl.axd/[值]'。

只在 IIS 6 上啓用了 ASP.NET 4 以後纔會出現此錯誤。出現此錯誤的緣由是,當 ASP.NET 檢測到某個網站配置爲使用 ASP.NET 4 時,ASP.NET 4 的本機組件就會將無擴展名的 URL 傳遞給 ASP.NET 的託管部分進行進一步處理。

可是,若是將某個 ASP.NET 4 網站下的虛擬目錄配置爲使用 ASP.NET 2.0,則按這種方式處理無擴展名的 URL 將產生包含「eurl.axd」的修改後的 URL,該 URL 隨後將發送給 ASP.NET 2.0 應用程序。 ASP.NET 2.0 沒法識別「eurl.axd」格式。  所以,ASP.NET 2.0 將嘗試找到一個名爲「eurl.axd」的文件並執行該文件。  因爲沒有此類文件存在,所以請求將失敗,並出現「HttpException」異常。

解決此問題的方法:

方法 1
--------
若是 ASP.NET 4 不是爲了運行網站所必需的,請改成將網站從新映射爲使用 ASP.NET 2.0。

方法 2
---------
若是須要 ASP.NET 4 才能運行網站,請將全部 ASP.NET 2.0 子虛擬目錄移動到映射到 ASP.NET 2.0 的其餘網站。

方法 3
---------
若是將網站從新映射到 ASP.NET 2.0 或更改虛擬目錄的位置不可行,則在 ASP.NET 4 中顯式禁用無擴展名的 URL 處理功能。請使用下面的過程:

1. 在 Windows 註冊表中,打開下面的節點: 

     HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\4.0.<build#>   

 注意:<build#> 是 .NET Framework 4 發行版的內部版本號。

2. 建立一個名爲「EnableExtensionlessUrls」的 DWORD 值。

3. 將「EnableExtensionlessUrls」設置爲 0。這將禁用無擴展名的 URL 的行爲。

4. 保存註冊表值並關閉註冊表編輯器。

5. 運行「iisreset」命令行工具,這將致使 IIS 讀取新的註冊表值。

 注意:將「EnableExtensionlessUrls」設置爲 1 後將禁用無擴展名的 URL 的行爲。 這是未指定值時的默認設置。

2.3.2.16 使用 Entity Framework 而且是經過使用 ASP.NET 4 預發行版建立的網站因缺乏程序集引用的緣故而中止工做

使用 Entity Framework 的 Web 項目所需的對命名空間和程序集的引用已從 RTM 版的 Web.config 根文件中移除。 所以,使用 EntityDataSource 的動態數據網站以及使用經過 ASP.NET 4 預發行版建立的 Entity Framework 的 Web 應用程序將失敗並報告編譯錯誤。

解決此問題的方法:

您能夠將缺乏的程序集和命名空間引用插入到應用程序的 Web.config 文件中。 下面的示例演示了必須手動插入到應用程序級 Web.config 文件中的程序集和命名空間元素。

<system.web>

<compilation>
        <assemblies>
            <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
            <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />              
        </assemblies>
    </compilation>

    <pages>
        <namespaces>
            <add namespace="System.Data.Entity.Design" />
            <add namespace="System.Data.Linq" />
        </namespaces>
    </pages>

</system.web>

2.3.2.17 以集成模式在 IIS 7 或 IIS 7.5 上運行的預發行版的 ASP.NET 4 可能報告從 RoleManagerModule 類引起的未經處理的 NullReferenceException 錯誤

在 Windows Vista、Windows Server 200八、Windows 7 和 Windows Server 2008 R2 上按照某些順序安裝 .NET Framework 版本 2.0 和版本 4 以後,ASP.NET 4 應用程序從 RoleManagerModule 類引起未經處理的 NullReferenceException 錯誤。 若是 ASP.NET 4 是向 IIS 7 或 IIS 7.5 註冊的惟一的 ASP.NET 版本,而且 ASP.NET 2.0 從未註冊到 IIS,或 ASP.NET 2.0 已從 IIS 7 或 IIS 7.5 中註銷,則會發生此狀況。

在任一狀況下,ASP.NET 4 的獨立註冊將致使配置文件中用在集成模式應用程序中的兩個 HTTP 模塊順序不正確。

解決此問題的方法:

儘管 ASP.NET 4 發佈版本中會修復此錯誤,可是預發行版的 ASP.NET 4 可能已爲模塊指定錯誤的順序。 若是在已從 ASP.NET 4 預發行版升級到 RTM 版本的計算機上仍發生該未經處理異常,則請執行如下步驟:

1.  打開 applicationHost.config 文件,該文件位於下面的文件夾中:

%windir%\System32\inetsrv\config

2. 查找如下元素

<location path="" overrideMode="Allow">

在此元素中列出集成模式針對的 HTTP 模塊。 相關信息位於 <modules> 元素中。

3. 找到以如下字符串開頭的元素:

<add name="RoleManager"  ...

4. 將該元素移到以如下字符串開頭的元素下面:

<add name="DefaultAuthentication"...

5. 保存該文件。

完成此操做後,<modules> 定義的一部分應相似於下面的示例:

<add name="DefaultAuthentication" type="System.Web.Security.DefaultAuthenticationModule" preCondition="managedHandler" />
<add name="RoleManager" type="System.Web.Security.RoleManagerModule" preCondition="managedHandler" />

2.3.2.18 使用 URL 路由的 MVC 2 和 ASP.NET 4 Web 窗體應用程序嘗試在 IIS 7 和 IIS 7.5 上處理無擴展的 URL 時可能返回 HTTP 404 錯誤

使用無擴展的 URL 的 MVC 2 和 ASP.NET 4 Web 窗體應用程序在 Windows Vista、Windows Server 200八、Windows 7 或 Windows Server 2008 R2 上運行時可能會返回 HTTP 404 錯誤。 若是隻有 .NET Framework 擴展性選項處於打開狀態,並且 IIS 是經過「Windows 功能」對話框安裝的,則會發生此狀況。 最小安裝的 IIS 將不包含某些 HTTP 模塊。 因爲 ASP.NET 和 IIS 管理 HTTP 管道事件轉換的方式不一樣,缺乏的 HTTP 模塊將阻止 ASP.NET URL 路由模塊在合適的時間運行。 所以,URL 路由模塊不會處理對無擴展的 URL 的請求,404 錯誤將發生。

解決此問題的方法:

在 Windows「控制面板」中「程序和功能」應用程序的「打開或關閉 Windows 功能」對話框中, 
執行如下步驟:

1. 導航至如下節點:

「Internet Information Services」-->「萬維網服務」-->「常見 HTTP 功能」

2. 確保選中「HTTP 錯誤重定向」選項。

- 或 -

1. 導航至如下節點:

「Internet Information Services」-->「萬維網服務」-->「性能功能」

2. 確保選中「靜態內容壓縮」選項。

在選定以上任一選項後,請單擊「肯定」以保存更改。

從新啓用 HTTP 錯誤重定向模塊或靜態內容壓縮模塊可確保 ASP.NET 和 IIS 正確同步 HTTP 管道事件。 這樣,URL 路由模塊就可以處理無擴展的 URL。

2.3.2.19 System.Web.Mobile.dll 已從 Web.config 根文件中移除

在早期版本的 ASP.NET 中,對 System.Web.Mobile.dll 程序集的引用包括在 Web.config 根文件的 <system.web><compilation> 下的 <assemblies> 部分中。 爲了提升性能,移除了對此程序集的引用。

解決此問題的方法:

System.Web.Mobile.dll 程序集包括在 ASP.NET 4 中,但被棄用。 若是要使用 System.Web.Mobile.dll 程序集中的類型,請在 Web.config 根文件或 Web.config 應用程序文件中添加對此程序集的引用。 例如,若是要使用任何棄用的 ASP.NET 移動控件,您必須在 Web.config 文件中添加對 System.Web.Mobile.dll 程序集的引用。

2.3.2.20 已對瀏覽器定義文件和瀏覽器功能作出更改

已更新瀏覽器定義文件以包含有關新增和更新的瀏覽器和設備的信息。 已移除相似 Netscape Navigator 的較舊的瀏覽器和設備,而且已添加諸如 Google Chrome 和 Apple iPhone 等較新的瀏覽器和設備。

解決此問題的方法:

您能夠將舊的瀏覽器定義文件用於 ASP.NET 4。舊的瀏覽器定義文件以及用於安裝這些文件的文檔包含在 http://go.microsoft.com/fwlink/?LinkID=186493 上發佈的「ASP.NET 瀏覽器定義文件」中。

2.3.2.21 ScriptManager.EnableCdn 和本地化的 Microsoft Ajax 文件

本地化版本的 Microsoft Ajax JavaScript 文件(如 MicrosoftAjax.debug.ja.js)將不會添加到 Microsoft Ajax 內容傳遞網絡 (CDN),直至發佈 .NET Framework 4 的本地化版本。 所以,當您使用本地化版本的 .NET Framework 和 CDN,請不要啓用 ScriptManager.EnableCdn 屬性。

解決此問題的方法:

等待發布本地化版本的 .NET Framework 4,而後再使用 Microsoft Ajax 內容傳遞網絡 (CDN)。 在此以前,請確保您的應用程序中的 ScriptManager 控件未設置 EnableCdn="true"。

2.3.2.22 常規 ASP.NET 性能計數器只報告來自 ASP.NET 4 應用程序的數據

在安裝 ASP.NET 4 以後,常規 ASP.NET 性能計數器將僅報告來自 ASP.NET 4 應用程序的數據。  若是將常規性能計數器用於 ASP.NET 1.一、ASP.NET 2.0 和 ASP.NET 3.5 應用程序,則性能計數器將不會報告任何數據。  運行早期版本的 ASP.NET 的應用程序的性能數據必須使用版本化的 ASP.NET 性能類別。

ASP.NET 的常規性能計數器包含如下性能計數器類別:  「ASP.NET」和「ASP.NET 應用程序」。

版本化的 ASP.NET 性能類別的名稱相似於「ASP.NET v2.0.50727」和「ASP.NET Apps v2.0.50727」。

解決此問題的方法:

此行爲是設計使然。  計算機上安裝的最新版的 ASP.NET「擁有」常規性能計數器類別。  所以,當您從運行不一樣版本的 ASP.NET 的多個 ASP.NET 應用程序中收集性能數據時,建議您使用版本化的性能計數器類別。

2.3.3 Winforms

沒有已知問題。

2.3.4 並行編程

沒有已知問題。

2.3.5 Managed Extensibility Framework

沒有已知問題。

2.3.6 Entity Framework

沒有已知問題。

2.3.7 LINQ to SQL

沒有已知問題。

2.3.8 Windows Communication Foundation (WCF)

2.3.8.1 在升級 Client Profile 後啓動服務或重置 IIS 時出現「系統找不到指定的文件」錯誤

在將 .NET Framework 4 從 Beta 2 升級到 RTM 版本以後,當您啓動服務或重置 IIS 時可能會發生如下錯誤:

「系統找不到指定的文件」

解決此問題的方法:

在控制面板的「程序」應用程序中修復 .NET Framework Client Profile。

2.3.9 Windows Presentation Foundation (WPF)

2.3.9.1 ia64 不支持 Windows Presentation Foundation (WPF)

ia64 計算機未安裝或不支持 WPF 程序集。

解決此問題的方法:

沒有解決方法。 不能在 ia64 上使用 WPF。

2.3.10 Windows Workflow Foundation (WF)

2.3.10.1 工做流驗證不支持 sizeof 運算符

當驗證包含 sizeof 運算符的工做流時,將會引起異常。

解決此問題的方法:

不要在工做流中使用 sizeof 運算符。

2.3.11 Client Profile(產品)

2.3.11.1 ia64 不支持 .NET Framework 4 Client Profile

ia64 不支持 .NET Framework 4 Client Profile。

解決此問題的方法:

若是在 ia64 上卸載 .NET Framework 4,請務必同時卸載 Full Framework 版本和 Client Profile 版本。

3. 相關連接

  • Microsoft 感謝下列與咱們一塊兒幫助保護客戶的人員:

              * Jeroen Frijters

  • 若要查看要升級到 .NET Framework 4 的 ASP.NET 開發人員可能會進行的重大更改的列表,請參見:http://go.microsoft.com/fwlink/?LinkID=186526。 此列表隨着新問題的發現而不斷獲得更新。
相關文章
相關標籤/搜索