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


摘要


安裝安全性更新 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 Manager

  1. 按一下 [開始],再按一下 [執行],輸入 cmd,然後按一下 [確定]
  2. 找出 %systemroot%\system32\inetsrv 的目錄。
  3. 在命令提示字元中,輸入 inetmgr 以開啟 IIS Manager。
  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 [file_name.vbs]


      注意:file_name 是 .vbs 指令碼名稱的預留位置。
    3. 若要關閉命令提示字元,輸入 [結束]

其他相關資訊


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

參考資料


如需有關 MS05-004 安全性更新的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

887219 MS05-004: ASP.NET 路徑驗證弱點可能會允許未經授權的存取