Ενδέχεται να εμφανιστούν μηνύματα λάθους, όταν εκτελείτε αναζήτηση ή εντοπισμό σφαλμάτων σε μια εφαρμογή του ASP.NET μετά την εγκατάσταση της ενημερωμένης έκδοσης ασφαλείας 887219 (MS05-004)


Σύνοψη


Μετά την εγκατάσταση της ενημερωμένης έκδοσης ασφαλείας MS05-004 και κατά την περιήγηση ή την προσπάθεια εντοπισμού σφαλμάτων σε ορισμένες εφαρμογές ASP.NET, ενδέχεται να αντιμετωπίσετε ορισμένα σφάλματα. Αυτό το άρθρο περιγράφει τα διαφορετικά μηνύματα σφάλματος που μπορεί να λάβετε. Επίσης παρέχει τις λύσεις για αυτά τα προβλήματα.

Συμπτώματα


Μετά την εγκατάσταση της ενημερωμένης έκδοσης ασφαλείας MS05-004 και κατά την περιήγηση ή την προσπάθεια εντοπισμού σφαλμάτων σε μια εφαρμογή Microsoft ASP.NET, όπου η διεύθυνση URL περιέχει μια τελική ανάστροφη κάθετο (\), ενδέχεται να λάβετε ένα από τα παρακάτω μηνύματα σφάλματος:
Δεν είναι δυνατή η εύρεση του πόρου.


Περιγραφή: HTTP 404. Ο πόρος που αναζητάτε (ή μία από τις εξαρτήσεις του) μπορεί να έχει καταργηθεί, να έχει αλλάξει όνομα ή να μην είναι διαθέσιμος προσωρινά. Διαβάστε την παρακάτω διεύθυνση URL και βεβαιωθείτε ότι την έχετε γράψει σωστά.

Error while trying to run project: Unable to start debugging on the web server. (Παρουσιάστηκε σφάλμα κατά την προσπάθεια εκτέλεσης του έργου: Δεν είναι δυνατή η έναρξη εντοπισμού σφαλμάτων στο διακομιστή Web.) Δεν ήταν δυνατή η έναρξη του εντοπισμού σφαλμάτων ASP.NET ή ATL Server. Βεβαιωθείτε ότι ο διακομιστής ASP.NET ή ATL είναι εγκατεστημένος αυτήν τη στιγμή στο διακομιστή.

Αιτία


Αυτό το πρόβλημα θα εμφανιστεί, εάν η διεύθυνση URL που καθορίζεται στη μετα-βάση Microsoft Internet Information Services (IIS) περιέχει μια τελική ανάστροφη κάθετο.

Επίλυση


Για να επιλύσετε αυτό το πρόβλημα, καταργήστε την τελική ανάστροφη κάθετο στη μετα-βάση IIS για τη διεύθυνση URL που καθορίζεται για την εφαρμογή Web που επηρεάζεται. Για να το κάνετε αυτό, χρησιμοποιήστε μία από τις ακόλουθες μεθόδους.

Μέθοδος 1: Χρήση της Διαχείρισης IIS (IIS Manager)

  1. Κάντε κλικ στο κουμπί Έναρξη, κάντε κλικ στην επιλογή Εκτέλεση, πληκτρολογήστε cmd και, στη συνέχεια, κάντε κλικ στο κουμπί OK.
  2. Εντοπίστε τον κατάλογο %systemroot%\system32\inetsrv.
  3. Στη γραμμή εντολών, πληκτρολογήστε inetmgr για να ανοίξετε τη Διαχείριση IIS.
  4. Κάντε δεξιό κλικ στην τοποθεσία Web για τη διεύθυνση URL που θέλετε να αλλάξετε και, στη συνέχεια, κάντε κλικ στην επιλογή Ιδιότητες.
  5. Εάν η εφαρμογή που επηρεάζεται είναι ένας εικονικός κατάλογος που βρίσκεται στην τοποθεσία Web, κάντε κλικ στην καρτέλα Κατάλογος και, στη συνέχεια, διαγράψτε την τελική ανάστροφη κάθετο από τη διαδρομή που καθορίζεται στο πλαίσιο κειμένου Τοπική διαδρομή.

    Εάν η εφαρμογή που επηρεάζεται βρίσκεται στον ριζικό κατάλογο στην τοποθεσία Web, κάντε κλικ στην καρτέλα Κεντρικός κατάλογος και, στη συνέχεια, διαγράψτε την τελική ανάστροφη κάθετο από τη διαδρομή που καθορίζεται στο πλαίσιο κειμένου Τοπική διαδρομή.
  6. Κάντε κλικ στο κουμπί Εφαρμογή και κατόπιν κάντε κλικ στο κουμπί OK.

Μέθοδος 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 και, στη συνέχεια, κάντε κλικ στο κουμπί OK.
    2. Στη γραμμή εντολών, πληκτρολογήστε

      cscript [file_name.vbs]
      .

      Σημείωση Το στοιχείο file_name είναι ένα σύμβολο κράτησης θέσης για το όνομα της δέσμης ενεργειών .vbs που χρησιμοποιείτε.
    3. Για να κλείσετε τη γραμμή εντολών, πληκτρολογήστε exit.

Περισσότερες πληροφορίες


Μετά την εφαρμογή αυτής της ενημερωμένης έκδοσης ασφαλείας, το ASP.NET εκτελεί πιο αυστηρούς ελέγχους για την εγκυρότητα τόσο των φυσικών διαδρομών όσο και των εικονικών διαδρομών που ζητήθηκαν.

Αναφορές


Για πρόσθετες πληροφορίες σχετικά με την ενημερωμένη έκδοση ασφαλείας MS05-004, κάντε κλικ στον αριθμό του άρθρου παρακάτω, για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft (Knowledge Base):

887219 MS05-004: Ένα θέμα ευπάθειας επικύρωσης διαδρομής του ASP.NET θα μπορούσε να επιτρέψει μη εξουσιοδοτημένη πρόσβαση