Microsoft .NET Framework 4 讀我檔案

如需最新版讀我檔案,請按一下這裡

1. 系統需求

1.1 支援的架構

1.2 支援的作業系統

1.3 硬體需求

1.4 其他系統需求

2. 已知問題

2.1 安裝

2.1.1 完整的架構 (安裝)

2.1.1.1 在已經安裝 .NET Framework 4 的情況下,修改 .NET Framework 3.5 之後無法載入型別 'System.ServiceModel.Activation.HttpModule'

這個問題可能是因下列情況所產生:

錯誤的全文如下:

無法從 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 載入型別 'System.ServiceModel.Activation.HttpModule'。

說明:在執行目前 Web 要求的過程中發生未處理的例外狀況。 請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。

若要解決這個問題:

2.1.1.2 在 Windows Vista、Windows Server 2008 和 Windows 7 上解除安裝 .NET Framework 4 Beta 2 時,applicationHost.config 檔案中會遺留未使用的 "isapiCgiRestriction" 項目

在已啟用 IIS 7 或 IIS 7.5 且已安裝 .NET Framework 4 的電腦上解除安裝 Beta 2 發行版本時,applicationHost.config 檔案中會遺留未使用的 "isapiCgiRestriction" 項目。 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 1.0,然後再安裝 .NET Framework 4。

若要解決這個問題:

  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 字型快取服務未完全移除

解除安裝 .NET Framework 4 (完整的架構) 之後,Windows Presentation Foundation (WPF) 4 字型快取服務未完全移除。

注意:這個問題會影響 .NET 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 1.0,然後再安裝 .NET Framework 4 Client Profile。

若要解決這個問題:

  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 (Client Profile) 之後,Windows Presentation Foundation (WPF) 4 字型快取服務未完全移除

解除安裝 .NET Framework 4 時,WPF 字型快取服務可能未完全解除安裝。 

雖然解除安裝後無法再使用 WPF 字型快取服務,但是 “Windows Presentation Foundation Font Cache 4.0.0.0” 服務項目仍顯示在 [服務] 主控台中。

在 Windows Vista 和 Windows Server 2008 中,服務主控台的 [描述] 欄位會顯示:「<無法讀取描述。 錯誤碼: 2 >」。  在 Windows XP 和 Windows Server 2003 中,[描述] 欄位仍會顯示正確的字串。

重新安裝 .NET Framework 將會修復這個問題。 已知沒有其他影響。

注意:這個問題會影響 .NET Framework 的 Client Profile 版本和完整版本。

若要解決這個問題:

  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 完整的架構 (解除安裝)

2.2.1.1 在 Windows Vista、Windows Server 2008 和 Windows 7 上解除安裝 .NET Framework 4 Beta 2 時,applicationHost.config 檔案中會遺留未使用的 "isapiCgiRestriction" 項目

在已啟用 IIS 7 或 IIS 7.5 且已安裝 .NET Framework 4 的電腦上解除安裝 Beta 2 發行版本時,applicationHost.config 檔案中會遺留未使用的 "isapiCgiRestriction" 項目。 Windows Vista、Windows Server 2008 和 Windows 7 中都會發生這種情況,而這些未使用的項目並不會影響 Web 伺服器的功能。 由於之後發行的 .NET Framework 4 版本在安裝時會更新 "isapiCgiRestriction" 項目,因此可以安裝於相同電腦上而不會有問題。

若要解決這個問題:

從 applicationHost.config 檔案刪除未使用的 "isapiCgiRestriction" 項目。 其實這不是必要步驟,因為這些在解除安裝後遺留的項目並不會影響產品的功能,也不會造成之後發行版本無法安裝的情況。

2.2.1.2 解除安裝 NET4 (完整的架構) 之後,WPF 4.0 FontCache 服務未完全移除

可完全移除這個被遺棄的 FontCache 服務的解決方法為:

  1. 在系統管理員模式中開啟命令視窗
  2. 輸入:'sc delete WPFFontCache_v0400'

您應該會看到:  “[SC] DeleteService SUCCESS”。

如果您重新整理服務主控台,FontCache 現在應該不會出現。  如果重新整理服務主控無法修正問題,可能需要重新開機。

(注意:這個問題與完整的架構有關,也是與以前 Client Profile 之 877240 相同讀我檔案問題的翻版)

若要解決這個問題:

可完全移除這個被遺棄的 FontCache 服務的解決方法為:

  1. 在系統管理員模式中開啟命令視窗
  2. 輸入:'sc delete WPFFontCache_v0400'

您應該會看到:“[SC] DeleteService SUCCESS”。

如果您重新整理服務主控台,FontCache 現在應該不會出現。  如果重新整理服務主控無法修正問題,可能需要重新開機。

2.2.2 Client Profile (解除安裝)

2.2.2.1 解除安裝 NET4 (Client Profile) 之後,WPF 4.0 FontCache 服務未完全移除

從 Vista/XP/w2k3/W2k8 解除安裝 .NET 4.0 時,WPF 字型快取服務未徹底解除安裝。 

雖然解除安裝後無法再使用 WPF 字型快取服務,但是 “Windows Presentation Foundation Font Cache 4.0.0.0” 服務項目仍會保留並顯示在 [服務] 主控台中。

在 Vista 和 W2k8 中,服務主控台的 [描述] 欄位會顯示:「<無法讀取描述。 錯誤碼: 2 >」。  在 XP/w2k3 中,[描述] 欄位仍會顯示正確的字串。

Framework 重新安裝將會修復這個問題。 已知沒有其他影響。

注意:這個問題同時與 NET4 Client Profile 和 NET4 完整版本有關

若要解決這個問題:

可完全移除這個被遺棄的 FontCache 服務的解決方法為:

  1. 在系統管理員模式中開啟命令視窗
  2. 輸入:'sc delete WPFFontCache_v0400'

您應該會看到:“[SC] DeleteService SUCCESS”。

如果您重新整理服務主控台,FontCache 現在應該不會出現。  如果重新整理服務主控無法修正問題,可能需要重新開機。

(注意:這個問題與 Client Profile 有關,也是與以前完整版本之 888322 相同讀我檔案問題的翻版) 

2.3 產品問題

2.3.1 一般問題

2.3.1.1 ClickOnce 發行失敗,因為可轉散發語言套件的位置不正確。

如果您核取 [必要條件] 對話方塊上的 [從應用程式的相同位置下載必要條件] 選項,並且選取下列任一元件做為必要條件,當您使用簡體中文或繁體中文版本的 Visual Studio 2010 發行應用程式時,可能會看到建置錯誤:

  1. Microsoft .NET Framework 4 (x86 and x64)
  2. Microsoft .NET Framework 4 Client Profile (x86 and 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 and x64)’ 是建置錯誤:

「MSB3152: 必要條件的安裝位置沒有設定為「元件廠商的網站」,且磁碟上找不到項目 'Microsoft .NET Framework 4 Client Profile (x86 and x64)' 中的檔案 'DotNetFX40Client\dotNetFx40LP_Client_x86_x64cs.exe'。 如需詳細資訊,請參閱 [說明]。」

若要解決這個問題:

    若要解決簡體中文版本的這個問題,請依照下列步驟執行:

  1. 巡覽至資料夾 '%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40Client'。 若是 x64 OS,此路徑則位於 %ProgramFiles(x86)% 下。
  2. 將 zh-Hans 資料夾複製到名為 zh-chs 的新資料夾。
  3. 巡覽至 zh-chs 資料夾。
  4. 在系統管理員模式中開啟 Package.xml。
  5. 將 >Culture< 的值變更為 zh-chs,如下所示:
  6. <String Name=”Culture”>zh-chs</String>

    若要解決繁體中文版本的這個問題,請依照下列步驟執行:

  1. 巡覽至資料夾 '%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40Client'。 若是 x64 OS,此路徑則位於 %ProgramFiles(x86)% 下。
  2. 將 zh-Hant 資料夾複製到名為 zh-cht 的新資料夾。
  3. 巡覽至 zh-cht 資料夾。
  4. 在系統管理員模式中開啟 Package.xml。
  5. 將 >Culture< 的值變更為 zh-cht,如下所示:
  6. <String Name=”Culture”>zh-cht</String>

2.3.1.2 ClickOnce 應用程式安裝不正確的可轉散發語言套件。

如果您核取 [必要條件] 對話方塊上的 [從應用程式的相同位置下載必要條件] 選項,並且選取下列任一元件做為必要條件,當您使用簡體中文或繁體中文版本的 Visual Studio 2010 發行應用程式時,可能無法安裝簡體中文或繁體中文語言套件:

  1. Microsoft .NET Framework 4 (x86 and x64)
  2. Microsoft .NET Framework 4 Client Profile (x86 and 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 OS,此路徑則位於 %ProgramFiles(x86)% 下。
  2. 將 zh-Hans 資料夾複製到名為 zh-chs 的新資料夾。
  3. 巡覽至 zh-chs 資料夾。
  4. 在系統管理員模式中開啟 Package.xml。
  5. 將 >Culture< 的值變更為 zh-chs,如下所示:
  6. <String Name=”Culture”>zh-chs</String>

    若要解決繁體中文版本的這個問題,請依照下列步驟執行:

  1. 巡覽至資料夾 '%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\DotNetFX40Client'。 若是 x64 OS,此路徑則位於 %ProgramFiles(x86)% 下。
  2. 將 zh-Hant 資料夾複製到名為 zh-cht 的新資料夾。
  3. 巡覽至 zh-cht 資料夾。
  4. 在系統管理員模式中開啟 Package.xml。
  5. 將 >Culture< 的值變更為 zh-cht,如下所示:
  6. <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 造成 Common Language Runtime (CLR) 初始化的預設行為產生些許變更。 安裝 .NET Framework 4 之後,Windows 7 上的 IIS 7.5 會呼叫原生 ASP.NET 4 DLL 以執行 CLR 初始化,而此初始化邏輯並無法讓您使用不同的組態檔。

若要解決這個問題:

由於 CLR 初始化邏輯基本上與 .NET Framework 4 和 IIS 7.5 的邏輯相同 (組態檔造成的副作用除外),因此您可以重新設定 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 由於 IIS 背景工作處理序沒有 Windows 暫存目錄的寫入權限,因此 Windows Vista、Windows Server 2008 和 Windows 7 上的 ASP.NET 編譯工作會失敗

由於 IIS 背景工作處理序沒有 Windows 暫存目錄 (%WINDOWS%\Temp) 的寫入權限,因此 Windows Vista、Windows Server 2008 和 Windows 7 上的某些 ASP.NET 編譯工作可能會失敗。 當您嘗試編譯某些項目 (例如,依存於 WSDL 檔案的 Web 服務參考) 時,可能會出現「剖析器錯誤訊息: 無法產生暫存類別」這個錯誤。
 
如果電腦上已經啟用 IIS 且已經安裝 .NET Framework 4,但尚未啟用 ASP.NET 和 .NET 擴充性功能,便會發生這個錯誤。

若要解決這個問題:

選項 1
----------
明確地將 Windows 暫存目錄 (%WINDOWS%\Temp) 的寫入權限授與 IIS 背景工作處理序帳戶。 若要這麼做,其中一種方式是將寫入權限授與包含背景工作處理序帳戶的群組,例如 IIS_IUSRS 群組。
 
選項 2
---------
啟用 ASP.NET 和 .NET 擴充性功能。 在 Windows 的 [控制台] 中開啟 [程式集],然後按一下 [程式和功能] 底下的 [開啟或關閉 Windows 功能]。 在 [Windows 功能] 對話方塊中,依序開啟 [網際網路資訊服務]、[全球資訊網服務] 和 [應用程式開發功能] 節點。 啟用下列功能:

     .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 預設會使用較新的程式碼存取安全性 (CAS) 實作,而非舊版 ASP.NET 的 CAS 實作。 在新的 CAS 實作中,部署在 GAC 中、已先行編譯且經過簽署的組件都必須使用 "SecurityTransparent" 屬性明確標記。

若要解決這個問題:

選項 1
--------
編譯組件之前,使用 "SecurityTransparent" 屬性來標記組件,如下列範例所示:

[assembly:System.Security.SecurityTransparentAttribute]

選項 2
--------
如<HOW TO:建立先行編譯網站的建立版本組件>(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 在 IIS 7 整合模式中啟動 ASP.NET 和 WCF 應用程式時可能會失敗

如果將新的組態區段加入至 ASP.NET 或 Windows Communication Foundation (WCF) 應用程式的 Web.config 檔案,應用程式在 IIS 7 整合模式中啟動時便會失敗。

例如將 <standardEndpoints> 組態區段加入至 WCF 應用程式的 Web.config 檔案時,應用程式在 IIS 7 整合模式中便無法啟動。 此外,IIS 7 將會傳回組態驗證錯誤,因為 IIS 7 組態系統無法辨識新的組態。

若要解決這個問題:

請下載並安裝可修正此問題的 Hotfix,此 Hotfix Hotfix 可從下列網址取得 http://support.microsoft.com/kb/958854。 或者,您也可以安裝已包含此修正的 Windows Vista SP 2。  Windows 7 和 Windows Server 2008 R2 沒有這個問題,因為這兩個作業系統都已經包含必要的修正。

2.3.2.6 在 Windows Vista、Windows Server 2008、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,而 IIS 7 和 IIS 7.5 以及 .NET 擴充性功能的作業系統安裝和解除安裝程序並非針對這種情況所設計,因此有必要重新註冊。

若要解決這個問題:

若要重新註冊 ASP.NET 4,請執行下列命令:

          aspnet_regiis -iru -enable 

您使用的 aspnet_regiis.exe 版本必須是安裝於 .NET Framework 4 安裝目錄中的版本。

2.3.2.7 當您管理遠端 Web 伺服器時,ASP.NET 管理主控台 (MMC) 索引標籤可能不會顯示

當您管理遠端 Web 伺服器時,如果在本機電腦執行管理主控台 (MMC),ASP.NET 索引標籤可能不會顯示。 當您使用 IIS 6 管理工具遠端管理已安裝 ASP.NET 的 Web 伺服器,而且本機電腦是執行 Windows Server 2008 x64、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 2008、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 效能計數器時,應用程式的事件記錄檔中可能會顯示類似以下的錯誤: 

          「在 DLL "%WINDOWS%\Microsoft.NET\Framework\v4.0.NNNNN\aspnet_perf.dll" 中找不到 "ASP.NET" 服務的開啟程序 "%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. 無論在任何 IIS 版本上,Web 應用程式專案 (WAP) 都是裝載為虛擬目錄。  這是因為 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 檔包含的組態資訊類型而定。

Windows Vista SP1 或 Windows Server 2008 SP1 (未安裝 Hotfix KB958854 或 SP2): 在此案例中,IIS 7 組態系統未正確比較應用程式層級 Web.config 檔與 ASP.NET 2.0 machine.config 檔來合併應用程式的 Managed 組態, 因此.NET Framework 3.5 或 .NET Framework 4 的 Web.config 必須要有 <system.web.extensions> 組態區段,才不會導致 IIS 7 驗證失敗。  手動修改的應用程式層級 Web.config 檔內未完全符合原本未定案組態區段定義 (這些定義是 Visual Studio 2008 中加入的) 的項目會導致組態錯誤 (Visual Studio 2008 產生的預設組態項目則可以運作)。 一般錯誤是手動修改的 Web.config 檔會省略各種組態區段定義之 "allowDefinition" 和 "requirePermission" 的組態屬性。 因此,應用程式層級 Web.config 檔中的縮寫組態區段與 ASP.NET 4 machine.config 檔中的完整定義之間會有不符的情形。 所以 ASP.NET 4 組態系統在執行階段會擲回組態錯誤。

Windows Vista SP2、Windows Server 2008 SP2、Windows 7、Windows Server 2008 R2 以及 Windows Vista SP1 和 Windows Server 2008 SP1 (已安裝 Hotfix KB958854): 在此案例中,IIS 7 和 IIS 7.5 原生組態系統會傳回組態錯誤,因為它會針對為了 Managed 組態區段處理常式所定義的 "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 2008、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 功能的組態選項。 這項功能位於下列節點:

網際網路資訊服務 > 全球資訊網服務 > 應用程式開發功能 > .NET 擴充性

在 Windows Vista、Windows Server 2008、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: 找不到路徑 '/[yourApplicationRoot]/eurl.axd/[Value]'」。

在 IIS 6 (作業系統為 Windows Server 2003 或 Windows Server 2003 R2) 上執行的 ASP.NET 2.0 應用程式可能會產生下列這類錯誤:

System.Web.HttpException: 找不到路徑 '/[yourApplicationRoot]/eurl.axd/[Value]'。

只有在 IIS 6 上已啟用 ASP.NET 4 時才會發生這個錯誤,原因是當 ASP.NET 偵測到有網站設定為使用 ASP.NET 4 時,ASP.NET 4 的原生元件會將易記的 URL 傳遞至 ASP.NET 的 Managed 部分以便於稍後處理。

不過,如果 ASP.NET 4 網站底下的虛擬目錄是設定為使用 ASP.NET 2.0,以前述方式處理這些易記 URL 會導致修改後的 URL 包含 "eurl.axd",而這個 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 行為。 如果未指定值,則預設是 1。

2.3.2.16 使用 Entity Framework 以及透過 ASP.NET 4 搶鮮版建立的網站由於遺失組件參考而停止運作

使用 Entity Framework 的 Web 專案所需之命名空間和組件的參考已經從 RTM 版本的根 Web.config 檔中移除。 因此,使用 EntityDataSource 的 Dynamic Data 網站和使用 Entity Framework 且透過 ASP.NET 4 搶鮮版建立的 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 搶鮮版可能會報告未處理的 NullReferenceException 錯誤,這個錯誤是從 RoleManagerModule 類別擲回

在 Windows Vista、Windows Server 2008、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 Form 應用程式嘗試在 IIS 7 和 IIS 7.5 上處理易記 URL 時,可能會傳回 HTTP 404 錯誤

在 Windows Vista、Windows Server 2008、Windows 7 或 Windows Server 2008 R2 上執行使用易記 URL 路由的 MVC 2 和 ASP.NET 4 Web Form 應用程式時,可能會傳回 HTTP 404 錯誤。 如果已經透過 [Windows 功能] 對話方塊安裝 IIS,而且只啟用了 .NET Framework 擴充性選項,就會發生這個問題。 IIS 的最小安裝不會包含某些 HTTP 模組。 由於 ASP.NET 和 IIS 管理 HTTP 管線事件轉換的方式,遺失的 HTTP 模組會阻止 ASP.NET URL 路由模組在適當的時間執行。 因此,URL 路由模組不會處理易記 URL 的要求,如此即會發生 404 錯誤。

若要解決這個問題:

在 [Windows 控制台] 之 [程式和功能] 應用程式的
[開啟或關閉 Windows 功能] 對話方塊中,執行下列步驟:

1. 巡覽至下列節點:

網際網路資訊服務 --> 全球資訊網服務 --> 一般 HTTP 功能

2. 確定已選取 [HTTP 錯誤重新導向] 選項。

-或-

1. 巡覽至下列節點:

網際網路資訊服務 --> 全球資訊網服務 --> 效能特性

2. 確定已選取 [靜態內容壓縮] 選項。

選取上述任一個選項之後,請按一下 [確定] 儲存變更。

重新啟用 [HTTP 錯誤重新導向] 模組或 [靜態內容壓縮] 模組,確認 ASP.NET 和 IIS 可正確同步 HTTP 管線事件, 如此即可讓 URL 路由模組處理易記 URL。

2.3.2.19 已經從根 Web.config 檔移除 System.Web.Mobile.dll

舊版 ASP.NET 的根 Web.config 檔包含 System.Web.Mobile.dll 組件的參考,其位置在 <assemblies> 區段的 <system.web><compilation> 底下。 為了提高效能,已經移除這個組件的參考。

若要解決這個問題:

ASP.NET 4 中包含 System.Web.Mobile.dll 組件,但是這個組件已經被取代。 如果您要使用 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 搭配使用。舊的瀏覽器定義檔及其安裝說明文件都包含在 ASP.NET 瀏覽器定義檔中,發行網址為 http://go.microsoft.com/fwlink/?LinkID=186493

2.3.2.21 ScriptManager.EnableCdn 和當地語系化的 Microsoft Ajax 檔

除非發行 .NET Framework 4 的當地語系化版本,否則 Microsoft Ajax JavaScript 檔 (例如 MicrosoftAjax.debug.ja.js) 的當地語系化版本不會加入至 Microsoft Ajax 內容傳遞網路 (CDN)。 因此,當您使用 .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.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 升級用戶端設定檔之後,如果啟動服務或重設 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 組件。

若要解決這個問題:

目前沒有解決方法。 WPF 無法在 ia64 上使用。

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,請確定解除安裝完整版本和 Client Profile 版本。

3. 相關連結

              * Jeroen Frijters

 

© 2010 Microsoft Corporation. All rights reserved.

使用規定  | 商標  | 隱私權聲明