Saya tahu pertanyaan ini ditanyakan berkali-kali di sini, tetapi saya tidak dapat menemukan solusi untuk masalah saya. Saya mencoba menyimpan gambar ke folder di .net c # tetapi dapatkan pengecualian ini:
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)
Saya memberikan kontrol penuh ke folder ini (savehere) ke network service
dan iis_iusrs
, bahkan memberikan kontrol penuh untuk everyone
tetapi masih mendapatkan pengecualian ini. Saya mencoba memberikan akses melalui explorer dan melalui manajer IIS, masih tidak berhasil
Saya melakukannya di Windows server 2008 R2 dan IIS 7.5, Siapa yang harus saya beri akses?
Terima kasih
Jawaban:
Anda perlu mencari tahu dari kumpulan aplikasi untuk situs web apa identitas itu berjalan di bawah (secara default ini
Application Pool Identity
) dan memberikan izin yang benar.sumber
ApplicationPoolIdentity
, bagaimana saya memberikan izin untuk itu?IIS APPPOOL\DefaultAppPool
pengguna Lihat artikel ini di situs IIS resmi: learn.iis.net/page.aspx/624/aplikasi-pool-identitiesDefaultAppPool
dan memberikanfull control
izin untuk itu, tetapi masih mendapatkan kesalahan yang samaeveryone
kontrol penuh. Jika kita memberikaneveryone
kontrol penuh, itupun kita perlu memberikan aksesDefaultAppPool
? Ini membingungkan.Images
direktori untuk pengguna / identitas yang menjalankan situs web (Anda perlu bertanya pada penyedia host Anda tentang itu).Baca pesan dengan cermat. Anda mencoba menyimpan ke file yang memiliki nama yang sama dengan direktori. Itu tidak bisa, Anda tidak bisa menimpa direktori yang diisi dengan file dengan satu file baru. Itu akan menyebabkan kehilangan data yang tidak dapat didiagnosis, "Akses ke jalur ditolak" adalah sistem file yang berusaha mencegah hal itu terjadi.
Pesan pengecualian tidak ideal, tetapi datang langsung dari OS dan mereka dilemparkan ke batu. Kerangka kerja ini sering menambahkan pemeriksaan tambahan untuk menghasilkan pesan yang lebih baik, tetapi ini merupakan tes mahal pada jaringan. Perf juga merupakan fitur.
Anda perlu menggunakan nama seperti 'C: \ inetpub \ wwwroot \ mysite \ images \ savehere \ mumble.jpg'. Pertimbangkan Path.Combine () untuk menghasilkan nama path dengan andal.
sumber
Saya mengalami masalah yang sama ketika mencoba membuat file di server (sebenarnya file yang merupakan salinan dari templat).
Inilah pesan kesalahan lengkapnya:
Saya menambahkan folder baru yang disebut
Templates
di dalam folder aplikasi IIS. Satu hal yang sangat penting dalam kasus saya adalah bahwa saya perlu memberikan izin Tulis (Gravar) untuk pengguna IUSR pada folder itu. Anda mungkin juga perlu memberiNetwork Service
danASP.NET v$.#
izin menulis yang sama.Setelah melakukan ini semuanya berfungsi seperti yang diharapkan.
sumber
Saya memiliki masalah yang persis sama.
Solusinya adalah file yang saya coba akses dibaca hanya , karena disalin dari file template yang hanya dibaca.
<facepalm />
sumber
Saya mendapat masalah ini ketika saya mencoba untuk menyimpan file tanpa menetapkan nama file.
Kode Lama
Kode Kerja
sumber
Masalah saya adalah saya harus meminta akses Baca saja:
sumber
Apa Identitas adalah Pool Aplikasi Anda untuk aplikasi Web yang berjalan, untuk memecahkan masalah, coba buat App Pool baru dengan mengatakan Layanan Jaringan sebagai identitasnya dan buat aplikasi web Anda menggunakan App Pool baru yang Anda buat dan lihat apakah kesalahannya masih ada.
sumber
Kiat berikut bukan jawaban untuk pertanyaan asli utas ini, tetapi mungkin membantu beberapa pengguna lain yang berakhir di laman web ini, setelah melakukan kesalahan bodoh yang sama yang baru saja saya lakukan ...
Saya mencoba untuk mendapatkan kontrol ASP.Net FileUpload untuk mengunggah file itu ke alamat jaringan yang berisi " bagian tersembunyi ", yaitu:
\ MyNetworkServer \ c $ \ SomeDirectoryOrOther
Saya tidak memahaminya. Jika saya menjalankan halaman web dalam mode Debug di Visual Studio, itu akan berfungsi dengan baik. Tetapi ketika proyek dikerahkan, dan berjalan melalui pengguna Application Pool, ia menolak untuk menemukan direktori jaringan ini.
Saya telah memeriksa pengguna mana yang menjalankan situs IIS saya, memberikan pengguna ini izin penuh ke direktori ini di server " MyNetworkServer ", dll, tetapi tidak ada yang berhasil.
Alasannya (tentu saja!) Adalah hanya Administrator yang dapat "melihat" share drive tersembunyi ini.
Solusi saya adalah dengan membuat saham "normal"
\ MyNetworkServer \ SomeDirectoryOrOther
dan ini menghilangkan kesalahan "Akses ke jalan ... ditolak". FileUpload berhasil menjalankan perintah
Semoga ini bisa membantu beberapa pengguna lain yang membuat kesalahan yang sama saya lakukan!
Perhatikan juga bahwa jika Anda mengunggah file besar (lebih dari 4 MB), maka IIS7 mengharuskan Anda memodifikasi file web.config di dua tempat. Klik tautan ini untuk membaca apa yang perlu Anda lakukan: Mengunggah file besar di ASP.Net
sumber
harap tambahkan IIS_IUSERS izin kontrol penuh ke folder Anda. Anda menemukan opsi ini dari tab keamanan di properti folder.
sumber
Saya Selesaikan dengan pengaturan ini:
sumber
Masalah saya adalah sesuatu seperti itu:
tetapi alih-alih menggunakan jalur saya harus menggunakan File.FullName ... Saya tidak tahu apakah itu akan membantu orang lain, hanya melewati pengalaman saya sendiri dengan erro yang diberikan ini!
sumber
Ubah pengaturan dari akun bawaan ke akun khusus dan masukkan nama pengguna dan kata sandi server lain.
Biarkan pengaturan sebagai terintegrasi (bukan mode klasik).
sumber
Mungkin itu akan membantumu.
sumber
Buat Direktori savehere menjadi direktori virtual dan berikan izin baca / tulis dari panel kontrol
sumber
Punya direktori dengan nama yang sama dengan file yang saya coba tulis, jadi orang-orang juga bisa melihatnya.
sumber
Saya mengalami masalah ini saat berkembang di workstation lokal saya.
Setelah beberapa
iisreset
doa yang gagal , saya memperbaiki situasi ini dengan me - reboot mesin saya.Dalam retrospeksi, pegangan file terbuka mungkin telah menyebabkan masalah.
sumber
Dalam kasus saya, saya harus menambahkan .NET Authorization Rule untuk situs web di IIS.
Saya menambahkan aturan untuk mengizinkan pengguna anonim.
sumber
Saya memiliki masalah yang sama tetapi saya memperbaikinya dengan menyimpan file di lokasi yang berbeda dan kemudian menyalin file dan menempelkannya di lokasi di mana saya menginginkannya. Saya menggunakan opsi untuk mengganti file yang ada dan yang melakukan trik untuk saya. Saya tahu ini bukan cara yang paling efisien tetapi bekerja dan membutuhkan waktu kurang dari 15 detik.
sumber
Saya punya banyak masalah dengan ini, khususnya terkait dengan kode saya yang berjalan secara lokal tetapi ketika saya harus menjalankannya di IIS itu adalah melemparkan kesalahan ini. Saya menemukan bahwa menambahkan tanda centang pada kode saya dan membiarkan aplikasi membuat folder saat pertama kali menyelesaikan masalah tanpa harus mengacaukan folder dengan otorisasi.
sesuatu seperti ini sebelum Anda memanggil metode Anda yang menggunakan folder
sumber
Jika Anda mendapatkan kesalahan ini saat mengunggah file di Sub domain dan berfungsi dengan benar di Anda
localhost
, ikuti langkah-langkah di bawah ini:Larutan:
Panel Plesk
CPanel
Untuk lebih jelasnya lihat di sini
Alasan Kesalahan:
FileUpload.SaveAs(Server.MapPath("~/uploads/" + *YOUR_FILENAME*))
akan menjadi kode Anda untuk memindahkan file Anda ke jalur unggah.Server.MapPath
akan memberi Anda path fisik (Real Path) dari direktori. Tetapi Sub domain Anda mungkin tidak memiliki izin untuk mengakses jalur fisik.Jadi, Jika Anda memberikan izin kepada sub domain untuk mengakses izin menulis / memodifikasi, itu akan menyelesaikan masalah.
sumber
Anda dapat mencoba memeriksa apakah properti web Anda untuk proyek tidak beralih ke IIS Express dan mengubahnya kembali ke IIS Lokal
sumber
Pastikan Anda bahwa target Anda
System.IO.Delete(string file)
adalah file yang ada. Mungkin ada kesalahan dalam kode Anda, seperti Anda tidak memberikan nama file yang benar ke metode, atau target Anda adalah folder. Dalam kasus ini Anda akan melihat: "akses ke jalan ditolak kesalahan".sumber
Saya membuat dir virtual dengan izin penuh dan menambahkan sumber ffmpeg dan file video di sana, jadi akhirnya masuk akal karena dapat diakses oleh siapa saja.
sumber