Wiem, że to pytanie było tu zadawane wiele razy, ale nie mogę znaleźć rozwiązania mojego problemu. Próbuję zapisać obraz do folderu w .net c #, ale otrzymuję ten wyjątek:
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)
Dałem pełną kontrolę temu folderowi (savetutaj) do, network service
a iis_iusrs
nawet dałem pełną kontrolę, everyone
ale nadal otrzymuję ten wyjątek. Próbowałem udzielić dostępu za pośrednictwem eksploratora i menedżera IIS, ale nadal nie mam szczęścia
Robię to w systemie Windows Server 2008 R2 i IIS 7.5. Komu potrzebuję dostępu?
Dzięki
Odpowiedzi:
Musisz dowiedzieć się z puli aplikacji dla witryny sieci Web, pod jaką tożsamością działa (domyślnie jest to
Application Pool Identity
) i nadać jej odpowiednie uprawnienia.źródło
ApplicationPoolIdentity
, jak nadać temu uprawnienia?IIS APPPOOL\DefaultAppPool
użytkownika. Zobacz ten artykuł w oficjalnej witrynie IIS: learn.iis.net/page.aspx/624/application-pool-identitiesDefaultAppPool
i dałemfull control
do niego uprawnienia, ale nadal otrzymuję ten sam błądeveryone
pełną kontrolę. Jeśli przyznamyeveryone
pełną kontrolę, to nawet wtedy musimy udzielić dostępuDefaultAppPool
? To zagmatwane.Images
katalogu dla użytkownika / tożsamości, na którym działa strona internetowa (musisz zapytać o to swojego dostawcę hosta).Przeczytaj uważnie wiadomość. Próbujesz zapisać do pliku, który ma taką samą nazwę jak katalog. To nie może zadziałać, nie możesz zastąpić katalogu wypełnionego plikami jednym nowym plikiem. To spowodowałoby niemożliwą do zdiagnozowania utratę danych. „Odmowa dostępu do ścieżki” to system plików walczący, aby temu zapobiec.
Komunikat o wyjątku nie jest idealny, ale pochodzi prosto z systemu operacyjnego i jest odlany w kamieniu. Framework często dodaje dodatkowe kontrole w celu generowania lepszych komunikatów, ale jest to kosztowny test w sieci. Perf to także funkcja.
Musisz użyć nazwy takiej jak „C: \ inetpub \ wwwroot \ mysite \ images \ savehere \ mumble.jpg”. Rozważ metodę Path.Combine (), aby niezawodnie wygenerować nazwę ścieżki.
źródło
Miałem ten sam problem podczas próby utworzenia pliku na serwerze (właściwie jest to plik będący kopią z szablonu).
Oto pełny komunikat o błędzie:
Dodałem nowy folder o nazwie
Templates
wewnątrz folderu aplikacji IIS. Jedną bardzo ważną rzeczą w moim przypadku jest to, że musiałem przyznać uprawnienia do zapisu (Gravar) użytkownikowi IUSR w tym folderze. Być może trzeba daćNetwork Service
iASP.NET v$.#
samo pozwolenie pisać.Po wykonaniu tej czynności wszystko działa zgodnie z oczekiwaniami.
źródło
Miałem dokładnie ten sam problem.
Rozwiązaniem było to, że plik, do którego próbowałem uzyskać dostęp, był tylko do odczytu , ponieważ został skopiowany z pliku szablonu, który był tylko do odczytu.
<facepalm />
źródło
Mam ten problem, gdy próbuję zapisać plik bez ustawiania nazwy pliku.
Stary kod
Kodeks roboczy
źródło
Mój problem polegał na tym, że musiałem poprosić o dostęp tylko do odczytu:
źródło
Jaka jest Twoja pula aplikacji dla aplikacji sieci Web działającej jako, aby rozwiązać problem, spróbuj utworzyć nową pulę aplikacji z, powiedzmy, usługą sieciową jako tożsamością, i spraw, aby aplikacja internetowa korzystała z nowej utworzonej puli aplikacji i sprawdź, czy błąd nadal występuje.
źródło
Poniższa wskazówka nie jest odpowiedzią na pierwotne pytanie tego wątku, ale może pomóc niektórym innym użytkownikom, którzy trafią na tę stronę, po popełnieniu tego samego głupiego błędu, który właśnie zrobiłem ...
Próbowałem uzyskać kontrolę ASP.Net FileUpload w celu przesłania pliku na adres sieciowy, który zawiera „ ukryty udział ”, a mianowicie:
\ MyNetworkServer \ c $ \ SomeDirectoryOrOther
Nie rozumiem tego. Gdybym uruchomił stronę internetową w trybie debugowania w programie Visual Studio, działałoby dobrze. Ale kiedy projekt został wdrożony i działał przez użytkownika puli aplikacji, odmówił znalezienia tego katalogu sieciowego.
Sprawdziłem, pod jakim użytkownikiem działa moja witryna IIS, przyznałem temu użytkownikowi pełne uprawnienia do tego katalogu na serwerze „ MyNetworkServer ” itd. Itd., Ale nic nie działało.
Powodem (oczywiście!) Jest to, że tylko administratorzy mogą „zobaczyć” te ukryte udziały na dysku.
Moim rozwiązaniem było po prostu utworzenie „normalnego” udziału dla
\ MyNetworkServer \ SomeDirectoryOrOther
i dzięki temu usunięto błąd „Odmowa dostępu do ścieżki…”. FileUpload mógł pomyślnie uruchomić polecenie
Mam nadzieję, że pomoże to innym użytkownikom, którzy popełniają ten sam błąd, co ja!
Zwróć również uwagę, że jeśli przesyłasz duże pliki (ponad 4 MB), IIS7 wymaga zmodyfikowania pliku web.config w dwóch miejscach. Kliknij to łącze, aby przeczytać, co musisz zrobić: Przesyłanie dużych plików w ASP.Net
źródło
dodaj uprawnienia pełnej kontroli IIS_IUSERS do swojego folderu. tę opcję znajdziesz na karcie bezpieczeństwa we właściwościach folderu.
źródło
Rozwiązałem z tym ustawieniem:
źródło
Mój problem był taki:
ale zamiast używać ścieżki, powinienem użyć File.FullName ... Nie wiem, czy to pomoże komukolwiek innemu, po prostu przekazując własne doświadczenia z tym błędem!
źródło
Zmień ustawienie z konta wbudowanego na konto niestandardowe i wprowadź nazwę użytkownika i hasło drugiego serwera.
Zachowaj ustawienie jako zintegrowane (zamiast trybu klasycznego).
źródło
Może to ci pomoże.
źródło
Zapisz w tym miejscu katalog wirtualny i nadaj uprawnienia do odczytu / zapisu z panelu sterowania
źródło
Miałem katalog o tej samej nazwie co plik, który próbowałem napisać, więc ludzie też mogą go znaleźć.
źródło
Napotkałem ten problem podczas programowania na mojej lokalnej stacji roboczej.
Po kilku nieudanych
iisreset
wywołaniach naprawiłem tę sytuację, ponownie uruchamiając komputer.Z perspektywy czasu problem mógł powodować otwarty uchwyt pliku.
źródło
W moim przypadku musiałem dodać regułę autoryzacji .NET dla witryny sieci Web w usługach IIS.
Dodałem regułę zezwalającą na anonimowych użytkowników.
źródło
Miałem ten sam problem, ale naprawiłem go, zapisując plik w innej lokalizacji, a następnie kopiując plik i wklejając go w miejscu, w którym chciałem, aby był. Skorzystałem z opcji zastąpienia istniejącego pliku i to załatwiło sprawę. Wiem, że to nie jest najbardziej efektywny sposób, ale działa i zajmuje mniej niż 15 sekund.
źródło
Miałem z tym wiele problemów, szczególnie związanych z moim kodem działającym lokalnie, ale kiedy musiałem go uruchomić w usługach IIS, zgłaszał ten błąd. Okazało się, że dodanie czeku do mojego kodu i zezwolenie aplikacji na utworzenie folderu przy pierwszym uruchomieniu rozwiązało problem bez konieczności majstrowania przy autoryzacjach folderów.
coś takiego, zanim wywołasz swoją metodę, która używa folderu
źródło
Jeśli pojawi się ten błąd podczas przesyłania plików w subdomenie i działa poprawnie w Twojej
localhost
, wykonaj poniższe czynności:Rozwiązanie:
Panel Plesk
CPanel
Więcej informacji można znaleźć tutaj
Przyczyna błędu:
FileUpload.SaveAs(Server.MapPath("~/uploads/" + *YOUR_FILENAME*))
będzie to Twój kod do przenoszenia plików do ścieżki przesyłania.Server.MapPath
poda fizyczną ścieżkę (rzeczywistą ścieżkę) katalogu. Jednak Twoja domena podrzędna może nie mieć pozwolenia na dostęp do ścieżki fizycznej.Tak więc, jeśli udzielisz subdomenie pozwolenia na dostęp do zapisu / modyfikacji, rozwiąże to problem.
źródło
Możesz spróbować sprawdzić, czy właściwości sieci Web projektu nie przełączyły się na IIS Express i zmienić je z powrotem na IIS Local
źródło
Upewnij się, że twój cel
System.IO.Delete(string file)
jest plikiem, który istnieje. Może w twoim kodzie jest błąd; na przykład nie przekazujesz poprawnej nazwy pliku do metody lub twoim celem jest folder. W takich przypadkach zobaczysz komunikat: „Odmowa dostępu do ścieżki, błąd”.źródło
Stworzyłem wirtualny katalog z pełną zgodą i dodałem tam źródło ffmpeg i pliki wideo, więc w końcu miało to sens, ponieważ każdy może mieć do niego dostęp.
źródło