ローカルでは問題なく動作しているのですが、アプリケーションをWebサーバに配置すると、「"Access to the path "D:‾Attachments‾myfile.doc" is denied"」というエラーが発生します。アプリケーションを実行しているIIS AppPool"のユーザーには、そのフォルダに対するフルパーミッションを与えました。また、Everyone"にもフルパーミッションを与えましたが、同じエラーが出ました。
アンチウイルスの例外リストにそのフォルダを追加しましたが、同じ結果になりました。もしかしたら、Windows Server 2008 R2では、私のアップロードが機能するためには何か仕掛けが必要なのではないかと思い始めています。ご協力ありがとうございました。
ありがとうございました。
あなたの asp.net アカウント {MACHINE}\ASPNET
はその場所への書き込み権限を持っていません。これが失敗の理由です。
ASP.NETリクエストIDにリソースへのアクセス権を付与することを検討してください。
ダウンロード中のフォルダ Properties > Security Tab > Edit > Add > locations > ローカルマシンを選択 > OKをクリック > ASPNETと入力 "Enter the object name to select" > Check Names
をクリックします。
希望するアクセス権(Full Control
)のボックスにチェックを入れます。これでうまくいかない場合は、「ネットワークサービス」でも同じことを行います。
これで、ローカルの「{MACHINENAME}\ASPNET」アカウントが表示されるはずなので、このアカウントに書き込み権限を設定します。
そうでない場合、アプリケーションが <identity impersonate="true"/>
を通じてなりすましを行っている場合、なりすまし先は匿名ユーザー(通常は IUSR_MACHINENAME
)または認証されたリクエストユーザーになります。
また、ASP.NETでファイルを保存するための専用の場所として、App_Data
を使用することもできます。これを作成するには、Visual StudioのASP.NETプロジェクトを右クリックし、「Add > Add ASP.NET Folder > App_Data」を選択します。すると、この場所にデータを保存できるようになります。
var path = Server.MapPath("~/App_Data/file.txt");
System.IO.File.WriteAllText(path, "Hello World");
ネットワークサービスに読み取り権限がないことが原因かもしれません。
サルーションです。
アップロードフォルダを右クリック -> poperty's -> security ->Edit -> add -> type :NETWORK SERVICE -> check box full control allow -> press ok or apply