UnauthorizedAccessException

Von: , Frage gestellt am Fr, 13. Mai 2005
Hi,

ich knabbere jetzt seit Stunden an folgendem Problem: Ich habe eine ASP.NET-Anwendung auf einem Server laufen und möchte, dass diese auf ein Netzlaufwerk eines anderen Servers zugreifen kann. Dabei kommt immer folgende Fehlermeldung:

"System.UnauthorizedAccessException: Access to the path "\\AndererServer\Netzlaufwerk\Test.txt" is denied."

Ich habe den Authentifizierungsmodus "Forms" benutzt, jeder User muss sich mit seinem NT-Logon anmelden ("LogonUser" der "advapi32.dll") und bekommt dann ein FormsAuthenticationTicket zugewiesen.

Impersonalisierung ist eingeschaltet. Im Web.config befinden sich also u.a. folgende Einträge:

<identity impersonate="true"/>

<authentication mode="Forms" >
<forms name=".AUTHCOOKIE" loginUrl="LogOn.aspx" protection="All" path="/" timeout="30" />
</authentication>

<authorization>
<deny users ="?" />
<allow users = "*" />
</authorization>

Der Code, der auf das Laufwerk zugreifen will, sieht folgendermaßen aus:

TextReader reader = new StreamReader("\\\\AndererServer\\Netzlaufwerk\\Test.txt");

Zur Probe zeigt mir der Code
string user = System.Security.Principal.WindowsIdentity.GetCurrent().Name;
an, dass die Server-Applikation tatsächlich unter meinem Login läuft.

Das Login, mit dem ich mich anmelde, hat Zugriff auf das gewünschten Netzlaufwerk. Als Test gebe ich im Browser meines Rechners ein:
\\AndererServer\Netzlaufwerk\Test.txt
und die Datei öffnet sich.

Sorry für die vielen Infos, ich bin halt mit meinem Latein am Ende und weiß nicht, wo der Hund begraben liegt...


Ich hoffe, von euch kann mir jemand helfen.
Danke im Voraus und Gruß
Alexander

5 Antworten zu dieser Frage

  1. Antwort von nach 4 Stunden 0 hilfreich
    Re: UnauthorizedAccessException
    Hi,

    [...]

    Hi auch!

    Obwohl ich mit der Rechteverwaltung unter ASP.NET nicht so richtig bekannt bin könnte es vielleicht an den Sicherheitseinstellungen von .NET auf diesem Rechner liegen.
    Funktioniert es denn, wenn Du an der Stelle nicht auf eine Datei auf einem anderen Server, sondern in einem lokalen Verzeichnis zugreifst?
    Dann ist das vermutlich das Problem und Du solltest über das .NET Framework ControlPanel die CAS überprüfen.

    Soweit ich herausgefunden habe fallen bei .NET UNC-Pfade, wie bei Dir, immer in die Internet-Zone, was die Code-Sicherheit anbelangt, auch wenn der Zielrechner Teil des lokalen Netzes ist.
    In diesem Fall hilft es auch, statt per UNC auf ein verbundenes Netzlaufwerk zuzugreifen.

    Gruß,
    Martin
    Ascent Wow Server Anleitung 2.3
    Passend zu diesem Artikel haben wir auf MyVideo das Video "Ascent Wow Server Anleitung 2.3" gefunden.

    Weitere passende Videos:
    Alpha Training Center Live Project Training Institute
    Web Platform Installer
    Alpha Training Center Live Project Training Institute

    • Antwort von nach einem Tag 0 hilfreich
      Re^2: UnauthorizedAccessException
      Hi Martin, (bin der Poster dieses Threads) Funktioniert es denn, wenn Du an der Stelle nicht auf eine
      Datei auf einem anderen Server, sondern in einem lokalen
      Verzeichnis zugreifst?
      Dann ist das vermutlich das Problem und Du solltest über das
      .NET Framework ControlPanel die CAS überprüfen.
      Ja, das funktioniert leider, ist also nicht der Fehler. Dennoch: Was ist CAS? Soweit ich herausgefunden habe fallen bei .NET UNC-Pfade, wie
      bei Dir, immer in die Internet-Zone, was die Code-Sicherheit
      anbelangt, auch wenn der Zielrechner Teil des lokalen Netzes
      ist.
      In diesem Fall hilft es auch, statt per UNC auf ein
      verbundenes Netzlaufwerk zuzugreifen.
      Das habe ich leider auch nicht verstanden. Könntest du das bitte nochmal erläutern (UNC == Universal Network Connection ??).


      Vielen Dank und Gruß
      Alexander
      • Antwort von nach 2 Tagen 0 hilfreich
        Re^3: UnauthorizedAccessException
        Hi Martin, (bin der Poster dieses Threads) Funktioniert es denn, wenn Du an der Stelle nicht auf eine
        Datei auf einem anderen Server, sondern in einem lokalen
        Verzeichnis zugreifst?
        Dann ist das vermutlich das Problem und Du solltest über das
        .NET Framework ControlPanel die CAS überprüfen.
        Ja, das funktioniert leider, ist also nicht der Fehler.
        Dennoch: Was ist CAS?
        CAS: Code Access Security. Einfach umschrieben: "Welcher .NET Code darf was?"
        Einführung bei MSDN hier: http://msdn.microsoft.com/library/default.asp?url=/l... Soweit ich herausgefunden habe fallen bei .NET UNC-Pfade, wie
        bei Dir, immer in die Internet-Zone, was die Code-Sicherheit
        anbelangt, auch wenn der Zielrechner Teil des lokalen Netzes
        ist.
        In diesem Fall hilft es auch, statt per UNC auf ein
        verbundenes Netzlaufwerk zuzugreifen.
        Das habe ich leider auch nicht verstanden. Könntest du das
        bitte nochmal erläutern (UNC == Universal Network Connection
        ??).
        Von Haus aus (also ohne Umkonfiguration) darf .NET Code, der von einem lokalen Datenträger ausgeführt wird, praktisch alles. Code, der aus der Intranet-Zone (also z.B. von einem Netzlaufwerk aus) ausgeführt wird, darf etwas weniger, bei manchen Aufrufen kann es zu solchen SecurityExceptions kommen.
        Code, der aus der Internet-Zone (und damit auch z.B. von einem UNC-Pfad aus) ausgeführt wird, darf noch weniger, insbesondere nicht auf das lokale Dateisystem oder die Registry zugreifen, usw.

        Vielen Dank und Gruß
        Alexander
        Hoffe, es ist jetzt etwas klarer und der Grund für Deine Probleme ist dort zu finden.

        Gruß,
        Martin
  2. Antwort von nach 3 Tagen 0 hilfreich
    Re: UnauthorizedAccessException
    Salü Alex

    Hat der ASP.NET User (ASPNET) Windows-Zugriffsrechte auf die Datei? Soweit ich weiss, laufen alle ASP.NET Requests unter diesem User.

    Gruss
    Andrea
    • Antwort von nach 3 Tagen 0 hilfreich
      Re^2: UnauthorizedAccessException
      Hallo Andrea,

      nein, aber ich bin der Meinung, dass durch die Impersonalisierung der Request unter dem entsprechenden Account läuft, also meinem Account, welches die Zugriffsrechte hat...

      Gruß
      Alexander [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Keine passende Antwort gefunden? Jetzt eigene Frage stellen!