Toegang tot het pad wordt geweigerd

Ik probeer een afbeelding op te slaan in een map in .NET C #, maar ik krijg deze uitzondering:

Access to the path 'C:\inetpub\wwwroot\mysite\images\savehere' is denied.The error occured at mscorlib because    at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode)

Ik heb volledige controle gegeven aan deze map (SAPASHER) tot network serviceen iis_iusrs, heeft zelfs volledige controle gegeven aan everyoneMaar nog steeds uitzondering.
Ik heb geprobeerd toegang te geven via Explorer en Via Iis Manager, nog steeds geen geluk

Ik doe het op Windows Server 2008 R2 en IIS 7.5, die moet ik toegang geven?


Antwoord 1, Autoriteit 100%

U moet uit het toepassingsbad voor de website weten wat de identiteit is waarop deze wordt uitgevoerd (standaard is dit Application Pool Identity) en toekent dat de juiste machtigingen.


Antwoord 2, Autoriteit 254%

Toegang tot het pad ‘C: \ InetPub \ wwwroot \ MySite \ Images \ SaveHere’ wordt

Lees het bericht aandachtig. U probeert op te slaan in een bestand met dezelfde naam als de map. Dat kan niet werken, je kunt een map vol met bestanden niet overschrijven met een enkel nieuw bestand. Dat zou ondiagnostisch gegevensverlies veroorzaken, “Toegang tot het pad is geweigerd” is het bestandssysteem dat terugvecht om te voorkomen dat dit gebeurt.

De uitzonderingsboodschap is niet ideaal, maar komt rechtstreeks uit het besturingssysteem en is in steen gebeiteld. Het framework voegt vaak extra controles toe om betere berichten te genereren, maar dit is een dure test op een netwerk. Perf is ook een functie.

Je moet een naam gebruiken zoals ‘C:\inetpub\wwwroot\mysite\images\savehere\mumble.jpg’. Overweeg Path.Combine() om op betrouwbare wijze de padnaam te genereren.


Antwoord 3, autoriteit 22%

Ik had hetzelfde probleem toen ik een bestand op de server probeerde te maken (eigenlijk een bestand dat een kopie is van een sjabloon).

Hier is de volledige foutmelding:

{ERROR} 08/07/2012 22:15:58 - System.UnauthorizedAccessException: Access to the path 'C:\inetpub\wwwroot\SAvE\Templates\Cover.pdf' is denied.

Ik heb een nieuwe map toegevoegd met de naam Templatesin de IIS app-map. Een heel belangrijk ding in mijn geval is dat ik de schrijfrechten (Gravar) voor de IUSR-gebruiker op die map moest geven. Mogelijk moet u ook Network Serviceen ASP.NET v$.#dezelfde schrijfrechten geven.

Hierna werkt alles zoals verwacht.


Antwoord 4, autoriteit 14%

Ik had precies hetzelfde probleem.

De oplossing was dat het bestand dat ik probeerde te openen alleen-lezenwas, omdat het was gekopieerd uit een sjabloonbestand dat alleen-lezen was.

<facepalm />


Antwoord 5, autoriteit 10%

Ik kreeg dit probleem toen ik het bestand probeerde op te slaan zonder de bestandsnaam in te stellen.

Oude code

File.WriteAllBytes(@"E:\Folder", Convert.FromBase64String(Base64String));

Werkcode

File.WriteAllBytes(@"E:\Folder\"+ fileName, Convert.FromBase64String(Base64String));

Antwoord 6, autoriteit 7%

Mijn probleem was dat ik alleen om leestoegang moest vragen:

FileStream fs = new FileStream(name, FileMode.Open, FileAccess.Read);

Antwoord 7, autoriteit 6%

Ik heb het opgelost met deze instelling:

IIS > Toepassingsgroepen > [uw site] > Geavanceerde instellingen… >
Identiteit > Ingebouwde accound > Lokaal Systeem


Antwoord 8, autoriteit 4%

Welke identiteit is uw toepassingsgroep voor de webtoepassing die wordt uitgevoerd, probeer voor het oplossen van problemen een nieuwe app-groep te maken met bijvoorbeeld netwerkservice als identiteit en laat uw webtoepassing de nieuwe app-groep gebruiken die u hebt gemaakt en kijk of de fout zich blijft voordoen .


Antwoord 9, autoriteit 4%

De volgende tip is nieteen antwoord op de oorspronkelijke vraag van deze thread, maar kan andere gebruikers helpen die op deze webpagina terechtkomen, nadat ze dezelfde stomme fout hebben gemaakt die ik zojuist heb gemaakt…

Ik probeerde een ASP.Net FileUpload-besturingselement te krijgen om het bestand te uploaden naar een netwerkadres dat een “verborgen share” bevatte, namelijk:

\MyNetworkServer\c$\SomeDirectoryOrOther

Ik begreep het niet. Als ik de webpagina in de foutopsporingsmodus in Visual Studio zou draaien, zou het prima werken. Maar toen het project werd geïmplementeerd en liep via een Application Pool-gebruiker, weigerde het deze netwerkmap te vinden.

Ik had gecontroleerd onder welke gebruiker mijn IIS-site draaide, gaf deze gebruiker volledige machtigingen voor deze map op de “MyNetworkServer“-server, enz enz, maar niets werkte.

De reden (natuurlijk!) is dat alleen beheerders deze verborgen schijfshares kunnen “zien”.

Mijn oplossing was om gewoon een “normale” share te maken om

\MyNetworkServer\SomeDirectoryOrOther

en hierdoor werd de fout “Toegang tot het pad… is geweigerd” verwijderd. De FileUpload kon de opdracht met succes uitvoeren

fileUpload.SaveAs(networkFilename);

Ik hoop dat dit andere gebruikers helpt die dezelfde fout maken als ik!

Houd er ook rekening mee dat als u grote bestanden uploadt (meer dan 4 MB), IIS7 vereist dat u het web.config-bestand op tweeplaatsen wijzigt. Klik op deze link om te lezen wat u moet doen:
Grote bestanden uploaden in ASP.Net


Antwoord 10, autoriteit 4%

voeg IIS_IUSERS volledig beheer toe aan je map.
u vindt deze optie op het tabblad Beveiliging in mapeigenschappen.


Antwoord 11, autoriteit 2%

Mijn probleem was zoiets:

FileStream ms = new FileStream(path, FileMode.Open, FileAccess.ReadWrite);

maar in plaats van het pad te gebruiken, zou ik File.FullName moeten gebruiken…
Ik weet niet of het iemand anders gaat helpen, ik geef alleen mijn eigen ervaring met deze fout door!


Antwoord 12, autoriteit 2%

  1. Verander de instelling van een ingebouwd account in een aangepast account en voer de gebruikersnaam en het wachtwoord van de andere server in.

  2. Behoud de instelling als geïntegreerd (in plaats van de klassieke modus).


Antwoord 13

Misschien helpt het je.

string tempDirectoryPath = @"C:\Users\HOPE\Desktop\Test Folder";
string zipFilePath = @"C:\Users\HOPE\Desktop\7za920.zip";
Directory.CreateDirectory(tempDirectoryPath);
ZipFile.ExtractToDirectory(zipFilePath, tempDirectoryPath);

Antwoord 14

Maak map hier opslaanals virtuele map en geef lees-/schrijfmachtiging vanuit het configuratiescherm


Antwoord 15

Ik had een map met dezelfde naam als het bestand dat ik probeerde te schrijven, dus daar kunnen mensen ook op letten.


Antwoord 16

Ik kwam dit probleem tegen tijdens het ontwikkelen op mijn lokale werkstation.

Na verschillende mislukte iisresetaanroepen, heb ik deze situatie verholpen door mijn computer opnieuw op te starten.

Achteraf gezien kan een open bestandshandle problemen hebben veroorzaakt.


Antwoord 17

In mijn geval moest ik een .NET-autorisatieregel voor de website in IIS toevoegen.

Ik heb een regel toegevoegd om anonieme gebruikers toe te staan.


Antwoord 18

Ik had hetzelfde probleem, maar ik heb het opgelost door het bestand op een andere locatie op te slaan en het bestand vervolgens te kopiëren en te plakken op de locatie waar ik het wilde hebben. Ik gebruikte de optie om het bestaande bestand te vervangen en dat deed de truc voor mij. Ik weet dat dit niet de meest efficiënte manier is, maar het werkt en duurt minder dan 15 seconden.


Antwoord 19

Ik had hier veel problemen mee, met name omdat mijn code lokaal draaide, maar toen ik het op IIS moest uitvoeren, gaf het deze fout. Ik ontdekte dat het toevoegen van een vinkje aan mijn code en de applicatie de map bij de eerste keer laten maken, het probleem oploste zonder te hoeven knoeien met de machtigingen van de mappen.

zoiets voordat je je methode aanroept die de map gebruikt

bool exists = System.IO.Directory.Exists("mypath");
        if (!exists)
            System.IO.Directory.CreateDirectory("mypath");

Antwoord 20

Als je deze foutmelding krijgt tijdens het uploaden van bestanden in Subdomeinen correct werkt in je localhost, volg dan onderstaande stappen:

Oplossing:

Plesk-paneel

  • Log in op uw Plesk-paneel. Selecteer uw subdomein dat een fout geeft.
  • Klik op Hosting-instellingen.
  • Selecteer Aanvullende schrijf-/wijzigingsrechtenen Toepassen.

CPanel

  • Ik ben niet zeker van de beschikbare opties in CPanel. Maar ALS u toestemming geeft aan de directory (in CPanel moet het een decimaal getal zijn, zoals 777, 755), wordt de fout opgelost.

Voor meer informatie zie hier

Reden voor fout:

  • Laten we aannemen dat FileUpload.SaveAs(Server.MapPath("~/uploads/" + *YOUR_FILENAME*))uw code is om uw bestanden naar het uploadpad te verplaatsen.
  • Server.MapPathgeeft je het fysieke pad (Real Path) van de directory. Maar uw subdomein heeft mogelijk geen toestemming voor toegang tot het fysieke pad.

  • Dus als u het subdomein toestemming geeft voor toegang tot schrijven/wijzigen, wordt het probleem opgelost.


Antwoord 21

U kunt proberen te controleren of uw webeigenschappen voor het project niet zijn overgeschakeld naar IIS Express en deze terugzetten naar IIS Local


Antwoord 22

Zorg ervoor dat uw doel in System.IO.Delete(string file)een bestaand bestand is.
Misschien zit er een fout in je code; alsof je niet de juiste bestandsnaam aan de methode doorgeeft, of je doel is een map. In deze gevallen ziet u de: “toegang tot het pad is geweigerd fout”.


Antwoord 23

In mijn geval probeer ik toegang te krijgen tot een bestand dat is ingesteld als alleen-lezen

En ik heb het opgelost door alleen-lezen uit te schakelen en ik heb het opgelost!

Ik hoop dat het nuttig kan zijn voor iemand die een situatie zoals ik ervaart.


Antwoord 24

Ik heb met volledige toestemming een virtuele map gemaakt en de ffmpeg-bron- en videobestanden daar toegevoegd, dus uiteindelijk was het logisch omdat iedereen er toegang toe had.

Other episodes