1

ASP.net 4.0 で開発され、IIS7 (ProdServer) でホストされている Web アプリケーションがあります。ページの 1 つで、ファイルを作成して \someOtherServer\Storage\ フォルダーに保存しています。

実稼働サーバーにログオンして実行し、\someOtherServer\Storage\ を押すと、フォルダーを参照できます。

ASP.net アプリケーションを実行すると、「パス '0' へのアクセスが拒否されました」というエラーが表示されます。

例外の詳細: System.UnauthorizedAccessException: パス '0' へのアクセスが拒否されました。

ASP.NET は、要求されたリソースへのアクセスを許可されていません。リソースへのアクセス権を ASP.NET 要求 ID に付与することを検討してください。ASP.NET には、アプリケーションが偽装されていない場合に使用されるベース プロセス ID (通常、IIS 5 または IIS 6 および IIS 7 のネットワーク サービスの {MACHINE}\ASPNET、および IIS 7.5 の構成済みアプリケーション プール ID) があります。アプリケーションが を介して偽装している場合、ID は匿名ユーザー (通常は IUSR_MACHINENAME) または認証された要求ユーザーになります。

ファイルへの ASP.NET アクセスを許可するには、エクスプローラーでファイルを右クリックし、[プロパティ] を選択して、[セキュリティ] タブを選択します。[追加] をクリックして、適切なユーザーまたはグループを追加します。ASP.NET アカウントを強調表示し、必要なアクセスのボックスをオンにします。

4

1 に答える 1

5

ASP.net サイトが実行されている apppool の ID を確認し、アカウントが他のサーバー上のリソースへのアクセス許可を持っていることを確認する必要があります。

IIS 7 でこれを行うには、次の手順を実行します。

  • IIS マネージャーを開き、これが発生しているサイトを参照します。
  • サイトを右クリックし、[アプリケーションの管理] -> [詳細設定] を選択します。
  • 一番上の設定には、実行しているアプリケーション プールの名前が表示されます。最も可能性が高いのは DefaultAppPool ですが、それ以外の可能性もあります (できれば別のものにする必要があります)。
  • キャンセルして、IIS マネージャーの [アプリケーション プール] ノードをクリックし、上で見たアプリケーション プールを右クリックして、[詳細設定] を選択します。
  • プロセス モデルの下の Identity 設定を見てください。これは ApplicationPoolIdentity である可能性があります。別のマシン上のリソースにアクセスするには、それを NetworkService またはドメイン アカウントとして実行する必要があります。1 つずつ試してみることをお勧めします。ドメイン アカウントは、パスワードが期限切れにならないサービス アカウントである必要があります (そうしないと、パスワードが期限切れになるたびに、ここでパスワードを再入力する必要があります)。ドメイン アカウントがリモート サーバー上の共有リソースにアクセスできることを確認します。

それが誰かを助けることを願っています。

于 2012-08-20T07:59:25.780 に答える