52

Web サーバー上の特定のフォルダーにファイルをアップロードする asp.net Web アプリケーションがあります。ローカルではすべて正常に動作しますが、アプリケーションを Web サーバーにデプロイすると、「パス "D:\Attachments\myfile.doc" へのアクセスが拒否されました」というエラーが発生し始めます。「IIS AppPool」ユーザーに、アプリケーションがフォルダーに対する完全なアクセス許可の下で実行されていることを示しました。「全員」に完全な権限を与えましたが、同じエラーが発生しました。

ウイルス対策の例外リストにフォルダーを追加しましたが、結果は同じでした。おそらく、Windows Server 2008 R2 でアップロードを機能させるにはトリックが必要なのではないかと疑い始めています。本当にありがとうございました。

ありがとう

4

9 に答える 9

82

サーバーまたはローカル マシンのフォルダーを右クリックし、完全なアクセス許可を付与します。

IIS_IUSRS

それでおしまい。

于 2014-02-01T13:13:14.063 に答える
47

asp.net アカウント{MACHINE}\ASPNETには、その場所への書き込みアクセス権がありません。それが失敗の理由です。

リソースへのアクセス権を ASP.NET 要求 ID に付与することを検討してください。

ダウンロードフォルダを右クリックProperties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Type ASPNET below "Enter the object name to select" > Click Check Names 必要なアクセスのボックスにチェックを入れます ( Full Control)。それがうまくいかない場合は、同じことをしてくださいNetwork Service

これでローカル{MACHINENAME}\ASPNETアカウントが表示されます。次に、このアカウントに書き込み権限を設定します。

それ以外の場合、アプリケーションが を介して偽装している場合<identity impersonate="true"/>、ID は匿名ユーザー (通常はIUSR_MACHINENAME) または認証された要求ユーザーになります。


または、ASP.NET でファイルを保存する専用の場所を使用するだけですApp_Data。作成するには、ASP.NET プロジェクト (Visual Studio 内) を右クリックしますAdd > Add ASP.NET Folder > App_Data。次に、この場所にデータを保存できます。

var path = Server.MapPath("~/App_Data/file.txt");
System.IO.File.WriteAllText(path, "Hello World");
于 2013-11-01T09:52:20.963 に答える
2

Google での最初の結果なので、誰かがこれに出くわした場合は、

SaveAs メソッドでファイル名も指定することを忘れないでください。

うまくいかない

file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation));

あなたはこれを必要とします:

filename = Path.GetFileName(file_upload.PostedFile.FileName);
file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation + "\\" + filename));

SaveAs メソッドは、アップロードされたファイル名を自動的に使用すると想定しました。「アクセスが拒否されました」というエラーが発生し続けました。実際の問題をあまり説明していない

于 2016-08-16T11:29:08.933 に答える
1

[高度なセキュリティ設定] を調べましたか?

以下の画像のようなものは、フォルダのアクセス許可を IIS_IUSRS に変更します

ここに画像の説明を入力

于 2016-08-16T13:25:27.010 に答える
1

これがゲームに遅れていることは知っていますが、誰かに役立つ場合に備えて共有したかった.

正確な状況が当てはまらない場合がありますが、同様の状況があり、ファイル属性の設定が役立ちました。

File 属性を Normal に設定してみてください。

var path = Server.MapPath("~/App_Data/file.txt");
File.SetAttributes(path, FileAttributes.Normal);
System.IO.File.WriteAllText(path, "Hello World");

これが誰かに役立つことを願っています。

于 2017-08-17T20:46:49.650 に答える