安裝安全性更新 887219 (MS05-004) 之後,當您瀏覽或偵錯 ASP.NET 應用程式時,可能會收到錯誤訊息

文章翻譯 文章翻譯
文章編號: 894670 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

安裝安全性更新 MS05-004 之後,當您瀏覽或嘗試偵錯某些 ASP.NET 應用程式時,可能會遇到錯誤。本文將告訴您可能會收到的不同錯誤訊息,並提供您修正那些問題的解決方案。

徵狀

安裝安全性更新 MS05-004 之後,當您瀏覽或偵錯 URL 含有結尾反斜線 (\) 的 Microsoft ASP.NET 應用程式時,可能會收到下列其中一個錯誤訊息。
找不到資源。
描述:HTTP 404. 您要尋找的資源 (或其相依性的其中之一) 可能已經移除、名稱已經變更或是暫時無法使用。請檢閱下列 URL,並且確定它的拼寫無誤。

嘗試執行專案時發生錯誤:無法在 Web 伺服器上啟動偵錯。無法啟動 ASP.NET 或 ATL Server 偵錯。請檢查 ASP.NET 或 ATL Server 目前是否已安裝在伺服器上。

發生的原因

如果在 Microsoft Internet Information Services (IIS) Metabase 中指定的 URL 含有結尾反斜線 (\),就會發生這個問題。

解決方案

如果要解決這個問題,請移除 IIS Metabase 中為受影響 Web 應用程式而指定的 URL 結尾反斜線。如果要執行這項操作,請使用下列其中一個方法:

方法 1:使用 IIS 管理員

  1. 按一下 [開始],再按一下 [執行],輸入 cmd,然後按一下 [確定]
  2. 找出 %systemroot%\system32\inetsrv 目錄。
  3. 在命令提示字元中輸入 inetmgr 以開啟「IIS 管理員」。
  4. 用滑鼠右鍵按一下您想要變更 URL 的網站,再按一下 [內容]
  5. 如果受影響的應用程式是網站下的虛擬目錄,請按一下 [目錄] 索引標籤,然後從 [本機路徑] 文字方塊指定的路徑中移除結尾的反斜線。

    如果受影響的應用程式是網站的根目錄,請按一下 [主目錄] 索引標籤,然後從 [本機路徑] 文字方塊指定的路徑中移除結尾的反斜線。
  6. 按一下 [套用],再按一下 [確定]

方法 2:使用 .vbs 指令碼

  1. 利用下列內容建立 .vbs 指令碼:
    
    Option Explicit
    
    Dim objWebService, objWebSite
    Dim objSite, objArgs, strServer
    Dim WshNetwork
    
    Set objArgs = WScript.Arguments
    
    If objArgs.Length = 1 Then
    	strServer = objArgs(0)
    ElseIf  objArgs.Length = 0 Then
    	Set WshNetwork = CreateObject("WScript.Network")
    	strServer = WshNetwork.ComputerName
    Else
    	WScript.Echo "Usage: CScript ModifyVDir.vbs [servername]"
    	WScript.Quit
    End If
    WScript.Echo "Connecting to " & strServer
    
    Set objWebService = GetObject("IIS://" & strServer & "/W3SVC")
    
    For Each objWebSite in objWebService
    	Set objSite = GetObject(objWebSite.AdsPath)
    	If objSite.Class = "IIsWebServer" Then
    		WScript.Echo objSite.AdsPath
    		EnumVDir objSite, 1
    	End If
    Next
    
    WScript.Echo "Done processing."
    
    Sub EnumVDir(objVDir, i)
    	Dim objSubVDir, objDir
    	Dim strNewPath
    		For Each objSubVDir in objVDir
    		If objSubVDir.Class = "IIsWebVirtualDir" Then
    			Set objDir = GetObject(objSubVDir.AdsPath)
    						If ((Right(objDir.Path, 1) = "\") and (Right(objDir.Path, 2) <> ":\")) Then
    				WScript.Echo Space(i*3) & objDir.AdsPath
    				WScript.Echo Space(i*3) & "Path = " & objDir.Path
    
    				strNewPath = Left(objDir.Path, Len(objDir.Path) - 1)
    				WScript.Echo Space(i*3) & "New Path = " & strNewPath
    									objDir.Put "Path", strNewPath
    				objDir.SetInfo
    			End If
    						EnumVDir objDir, i + 1
    		End If
    	Next
    End Sub
    
    
  2. 由命令列執行 .vbs 指令碼。
    1. 按一下 [開始],再按一下 [執行],輸入 cmd,然後按一下 [確定]
    2. 在命令提示字元中,輸入 cscript [filename.vbs]

      注意 filename 是 .vbs 指令碼名稱的預留位置。
    3. 輸入 exit 以關閉命令提示字元。

其他相關資訊

在您套用此安全性更新之後,ASP.NET 會針對實體路徑與要求的虛擬路徑的有效性執行更嚴格的檢查。

?考

如需有關 MS05-004 安全性更新的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
887219 MS05-004:ASP.NET 路徑驗證弱點可能會允許未授權的存取

屬性

文章編號: 894670 - 上次校閱: 2007年12月3日 - 版次: 2.6
這篇文章中的資訊適用於:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.0 Service Pack 1
  • Microsoft .NET Framework 1.0 Service Pack 2
  • Microsoft .NET Framework 1.0 Service Pack 3
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.1 Service Pack 1
關鍵字:?
kbhttp404 kbdev kbasp kbtshoot kberrmsg kbprb KB894670
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com