質問

この質問がここで何度も尋ねられたことは知っていますが、私の問題の解決策は見つかりません。 .NET C#のフォルダーに画像を保存しようとしていますが、この例外を取得します。

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)

私はこのフォルダー(SaveHere)を完全に制御しました network serviceiis_iusrs, 、さらに完全にコントロールしました everyone しかし、まだこの例外を取得しています。私はExplorerとIIS Managerを介してアクセスを試みましたが、まだ運がありません

Windows Server 2008 R2とIIS 7.5でやっていますが、誰にアクセスする必要がありますか?

ありがとう

役に立ちましたか?

解決

あなたはウェブサイトのアプリケーションプールからそれが実行されているアイデンティティは何ですか(デフォルトでこれは Application Pool Identity)そして、正しい許可を許可します。

他のヒント

パスへのアクセス

メッセージを注意深く読んでください。ディレクトリと同じ名前のファイルに保存しようとしています。うまくいかないので、ファイルで満たされたディレクトリを1つの新しいファイルで上書きすることはできません。それは診断できないデータ損失を引き起こすでしょう、「パスへのアクセスが拒否されます」は、それが起こらないようにファイルシステムが反撃します。

例外メッセージは理想的ではありませんが、OSからまっすぐに来て、それらは石で鋳造されています。フレームワークは、多くの場合、より良いメッセージを生成するために追加のチェックを追加しますが、これはネットワーク上の高価なテストです。パフォーマンスも機能です。

'c: inetpub wwwroot mysite images savehere mumble.jpg'などの名前を使用する必要があります。検討 path.combine() パス名を確実に生成します。

サーバー上にファイルを作成しようとしているときに同じ問題を抱えていました(実際、テンプレートからのコピーであるファイル)。

これが完全なエラーメッセージです:

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

呼ばれる新しいフォルダーを追加しました Templates IISアプリフォルダー内。私の場合の非常に重要なことの1つは、そのフォルダー上のIUSRユーザーに書き込み(Gravar)許可を与える必要があることです。あなたも与える必要があるかもしれません Network ServiceASP.NET v$.# 同じ書き込み許可。

enter image description here

これを行った後、すべてが期待どおりに機能します。

まったく同じ問題がありました。

解決策は、私がアクセスしようとしていたファイルは 読んでください, 、読み取られたテンプレートファイルからコピーされたため。

u003Cfacepalm />

ファイル名を設定せずにファイルを保存しようとすると、この問題が発生しました。

古いコード

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

作業コード

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

私の問題は、読み取りアクセスのみを求めなければならなかったことでした:

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

フォルダにIIS_iusersの完全な制御許可を追加してください。このオプションは、フォルダープロパティの[セキュリティ]タブから見つかります。find this option and user in this image

Webアプリケーションのアプリケーションプールは、トラブルシューティングとして実行され、ネットワークサービスを備えた新しいアプリプールをIDのIDとして作成し、Webアプリケーションに作成した新しいアプリプールを使用して、エラーが持続しているかどうかを確認してください。

次のヒント そうではありません このスレッドの元の質問への回答ですが、私がちょうどしたのと同じ愚かな間違いを犯した後、このウェブページで終わる他のユーザーを助けるかもしれません...

ASP.NET FileuPload Controlを取得して、ファイルをアップロードして、「」を含むネットワークアドレスにファイルをアップロードしようとしていました。隠されたシェア「すなわち:

mynetworkserver c $ somedirectoryorother

私はそれを理解していませんでした。 Visual StudioでデバッグモードでWebページを実行した場合、正常に動作します。しかし、プロジェクトが展開され、アプリケーションプールユーザーを介して実行されていたとき、このネットワークディレクトリを見つけることを拒否しました。

IISサイトが実行されているユーザーを確認し、このユーザーにこのディレクトリに完全な権限を与えました。mynetworkserver「サーバーなど。しかし、何も機能しませんでした。

(もちろん!)理由は、これらの隠されたドライブシェアを「見る」ことができる管理者だけができるからです。

私の解決策は、単に「通常の」共有を作成することでした

mynetworkserver somedirectoryorother

そして、これは「パスへのアクセスは...拒否されます」エラーを取り除きました。 fileuploadはコマンドを正常に実行することができました

fileUpload.SaveAs(networkFilename);

これが私と同じ間違いを犯した他のユーザーに役立つことを願っています!

また、大きなファイル(4MBを超える)をアップロードしている場合、IIS7はweb.configファイルを変更する必要があることに注意してください。 2 場所。このリンクをクリックして、必要なことを読む:ASP.NETに大きなファイルをアップロードします

私はこの設定で解決しました:

iis>アプリケーションプール> [サイト]>高度な設定...> ID>ビルトインAccund> localSystem

私の問題はそのようなものでした:

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

しかし、パスを使用する代わりに、file.fullnameを使用する必要があります...それが他の誰かを助けるかどうかはわかりません。

  1. 内蔵アカウントからカスタムアカウントに設定を変更し、他のサーバーのユーザー名とパスワードを入力します。

  2. 設定を統合して(クラシックモードの代わりに)保持します。

多分それはあなたを助けます。

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

ディレクトリを作成します Hereを保存します 仮想ディレクトリになり、コントロールパネルから読み取り/書き込み許可を与える

私が書き込もうとしていたファイルと同じ名前のディレクトリを持っていたので、人々もそれを探すことができます。

地元のワークステーションで開発中にこの問題に遭遇しました。

数回失敗した後 iisreset 呼びかけ、私はこの状況を改善しました 再起動 私のマシン。

振り返ってみると、オープンファイルハンドルが問題を引き起こしている可能性があります。

私の場合、IISのWebサイトに.NET認証ルールを追加する必要がありました。

匿名のユーザーを許可するルールを追加しました。

.NET Authorization Rules

同じ問題がありましたが、ファイルを別の場所に保存してからファイルをコピーして、望んでいた場所に貼り付けて修正しました。既存のファイルを交換するためにオプションを使用しましたが、それが私のためにトリックをしました。これは最も効率的な方法ではないことは知っていますが、動作し、15秒もかかりません。

私はこれに多くの問題を抱えており、特に私のコードがローカルで実行されていることに関連していますが、IISでそれを実行する必要があるとき、それはこのエラーを投げかけていました。コードにチェックを追加し、アプリケーションが最初の実行でフォルダーを作成できるようにすることが、フォルダーの認可を台無しにすることなく問題を修正することがわかりました。

フォルダを使用するメソッドを呼び出す前に、このようなもの

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

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

私は完全な許可を得て仮想監督を作成し、そこにFFMPEGソースとビデオファイルを追加したので、最終的に誰でもアクセスできるので理にかなっています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top