web-dev-qa-db-ja.com

IIS-パスへのアクセスが拒否されました

この質問は何百万回も尋ねられましたが、私はそれらの解決策を試しましたが、なぜこのエラーが発生しているのかまだわかりません:

パス '\ 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。

15
Chopman

これを試して:

「パス 'xxxxxx'へのアクセスが拒否されました。」

エラーが示すように、フォルダにアクセス許可を割り当てる必要があります

  1. フォルダを右クリック
  2. [セキュリティ]タブに移動します
  3. 編集をクリックします
  4. 追加をクリックします
  5. Addvanceをクリックします
  6. 今すぐ探す
  7. IIS_IUSRSへのアクセス許可(フルコントロール)
  8. OKをクリックします
  9. OKをクリックします
  10. 許可する場合はFull Controlをクリックします
  11. OKをクリックします
  12. 再度アプリケーションを実行します

注:上記が機能しない場合は、NETWORKNETWORK SERVICEユーザーに同じ権限を付与してください

33
Ganesh_Devlekar

私の場合、プロジェクトのルートフォルダーに移動して右クリックし、プロパティウィンドウを開いて、読み取り専用属性のチェックを外しました。 [OK]をクリックすると、すべてが機能し始めました。

2
Nurhak Kaya

サーバーで匿名認証が有効になっている場合は、IUSRアカウントの読み取りアクセス許可を設定します。アプリケーションプールIDへのアクセスを許可するには、IIS_USERSグループの読み取りアクセス許可を設定します。 UNCパスについては、共有フォルダーに関連する権限があることを確認してください( https://technet.Microsoft.com/en-us/library/cc726004(v = ws.11).aspx を参照)詳細)。

1
Alexander