この質問は何百万回も尋ねられましたが、私はそれらの解決策を試しましたが、なぜこのエラーが発生しているのかまだわかりません:
パス '\ server1\Folder1\Folder2\Folder3\file1.dwg'へのアクセスが拒否されました。
エラーを返すアクションは次のとおりです。
public ActionResult Download(string fileName)
{
fileName = fileName + ".dwg";
string path = Path.Combine(@"\\server1\Folder1\Folder2\Folder3\", fileName);
return File(path, "application/octet-stream", fileName);
}
複数のユーザー名、たとえば "SERVER1\NETWORK SERVICE"-フルコントロールの "Folder3"にアクセス許可を与えようとしました。
アプリケーションは、既定のWebサイトで実行されています。アプリケーションはDefaultAppPoolの下で実行されており、DefaultAppPoolは「NetworkService」のIDを持っています。
次のコードは、ID "NETWORK SERVICE"を提供します。
WindowsIdentity identity = HttpContext.Request.LogonUserIdentity;
自分のコンピューターでアプリケーションが正常に動作していた(同じダウンロードディレクトリ)が、展開後にこの問題が発生した。
サーバーはWindows 2008 R2 SP1とIIS 7.5。
これを試して:
「パス 'xxxxxx'へのアクセスが拒否されました。」
エラーが示すように、フォルダにアクセス許可を割り当てる必要があります
IIS_IUSRS
へのアクセス許可(フルコントロール)Full Control
をクリックします注:上記が機能しない場合は、NETWORK
、NETWORK SERVICE
ユーザーに同じ権限を付与してください
私の場合、プロジェクトのルートフォルダーに移動して右クリックし、プロパティウィンドウを開いて、読み取り専用属性のチェックを外しました。 [OK]をクリックすると、すべてが機能し始めました。
サーバーで匿名認証が有効になっている場合は、IUSRアカウントの読み取りアクセス許可を設定します。アプリケーションプールIDへのアクセスを許可するには、IIS_USERSグループの読み取りアクセス許可を設定します。 UNCパスについては、共有フォルダーに関連する権限があることを確認してください( https://technet.Microsoft.com/en-us/library/cc726004(v = ws.11).aspx を参照)詳細)。