FIX: "Zugriff verweigert" Fehlermeldung beim Identitätswechsel aktiviert ASP.NET Indexdienst zugreifen

Veralteter Haftungsausschluss für KB-Inhalte

Dieser Artikel wurde für Produkte geschrieben, für die Microsoft keinen Support mehr anbietet. Deshalb wird dieser Artikel im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.

Problembeschreibung

Wenn Sie Index Server über eine ASP.NET Seite suchen, erhalten Sie folgende Fehlermeldung:

Zugriff wurde verweigert. Beschreibung: Während der Ausführung der aktuellen Webanfrage ist eine nicht behandelte Ausnahme aufgetreten. Überprüfen Sie weitere Informationen über den Fehler und Ursprung im Code Stapelrahmen.

Details der Ausnahme: System.Data.OleDb.OleDbException: Zugriff verweigert.
Dieses Verhalten wird beobachtet, nur wenn Identitätswechsel für ASP.NET Web-Anwendung aktivieren und der Sicherheitskontext, unter dem ASP.NET Worker-Prozess (Aspnet_wp.exe) ausgeführt wird, das ASPNET-Konto.

Problemlösung

Service Pack-Informationen

Um dieses Problem zu beheben, beziehen Sie das neueste Servicepack für Microsoft Windows 2000. Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:
260910 wie Sie das neueste Servicepack für Windows 2000 erhalten

PROBLEMUMGEHUNG

Verwenden Sie eine der folgenden Methoden, dieses Problem zu umgehen:

  • Deaktivieren Sie den Identitätswechsel für die gesamte ASP.NET Web-Anwendung. Dies ist die Standardeinstellung.
  • Deaktivieren Sie den Identitätswechsel nur für bestimmte ASPX-Seite, die die Suche mit Index Server. Fügen Sie hierzu < Location >-Tag in der Datei Web.config wie folgt:
    <location path="filename.aspx"><system.web>
    <identity impersonate="false" />
    </system.web>
    </location>

Wenn diese Abhilfe nicht akzeptabel sind, kann den Sicherheitskontext ändern, unter dem der Arbeitsprozess ASP.NET dem Systemkonto ausgeführt wird. Microsoft empfiehlt jedoch nicht, den Sicherheitskontext des Arbeitsprozesses ASP.NET das Systemkonto festgelegt, da das Systemkonto ein hoch privilegiertes Administratorkonto auf dem Webservercomputer ist. Diese Lösung nur verwenden Sie, wenn keine andere Abhilfen akzeptabel sind.

So ändern Sie den Sicherheitskontext, unter dem ASP.NET Arbeitsprozess ausgeführt, Satz das Attribut UserName auf SYSTEMund dann, das Kennwort -Attribut Autogenerate im Abschnitt < ProcessModel > der Datei Machine.config. Die Datei Machine.config befindet sich imWindows-VerzeichnisC:\ \Microsoft.Net\Framework\v1.0.3705\Config Ordner.

Status

Microsoft hat bestätigt, dass es einen Fehler in Microsoft-Produkten handelt, die im Abschnitt "Gilt für" aufgeführt sind. Dieser Fehler wurde behoben in ASP.NET (in.NET Framework enthalten) 1.1.
Microsoft hat bestätigt, dass dies ein Problem in Microsoft Windows 2000.
Dieses Problem wurde erstmals in Microsoft Windows 2000 Service Pack 4 behoben.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Starten Sie Microsoft Visual Studio .NET.
  2. Erstellen einer ASP.NET Web-Anwendung.
  3. Fügen Sie den folgenden Code in den HTML-Code einer ASPX-Seite:
    <%@ Page language="c#" %><%
    System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("provider=msidxs;");

    conn.Open();

    string Sql = "Select DocTitle, vpath, characterization, rank from Scope(' DEEP TRAVERSAL OF \"C:\\\" ') where FREETEXT(' \"ticket\" ') order by rank desc";

    System.Data.OleDb.OleDbDataAdapter da = new System.Data.OleDb.OleDbDataAdapter(Sql, conn);

    System.Data.DataSet ds = new System.Data.DataSet();

    da.Fill(ds, "SearchResults");
    Response.Write("Search Results: <br>");
    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)

    {

    Response.Write("<br>" + ds.Tables[0].Rows[i]["vpath"].ToString());

    }

    %>

  4. Ändern der Datei Web.config wie folgt den Identitätswechsel aktivieren:
    <identity impersonate="true" />
  5. Stellen Sie sicher, dass der Sicherheitskontext, unter dem der Workerprozess Aspnet_wp.exe ausgeführt wird, das ASPNET-Konto. Hierzu legen Sie das Attribut UserName auf Computer, und legen Sie das Kennwortattribut auf Autogenerate Abschnitt < ProcessModel > der Datei Machine.config.

    Hinweis Standardmäßig soll ASP.NET Worker-Prozess im Sicherheitskontext eines eingeschränktem ASPNET-Konto ausgeführt.
  6. Starten Sie den Indexdienst auf dem Computer.
  7. Erstellen Sie die Anwendung, und öffnen Sie die ASPX-Seite in Ihrem Browser. Beachten Sie, dass die Fehlermeldung, die im Abschnitt "Symptome" aufgeführt ist.

Referenzen

Weitere Informationen zum Identitätswechsel in ASP.NET finden Sie im folgenden Artikel der Microsoft Knowledge Base:

306158 zum Identitätswechsel in einer ASP.NET Anwendung implementieren

Weitere Informationen über ASP.NET Arbeitsprozessidentität klicken Sie auf die folgenden Artikelnummer der Microsoft Knowledge Base:

317012 Prozess- und Anforderungsidentität in ASP.NET

Eigenschaften

Artikelnummer: 323293 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Feedback