0

VS2012 開発サーバーで問題なく動作する ASP.NET MVC/WebAPI 混合プロジェクトがあります。標準の MVC{controller}/{action}/{id}ルートと、追加の WebAPI ルートがありapi/{controller}/{id}ます。で始まるリクエスト/api/...は WebAPI に送信され、その他は通常の MVC に送信されます。

ローカル IIS にデプロイすると、通常の MVC ルートが機能します。ただし、/apiWebAPI を呼び出すと例外が発生します

Access to the path 'C:\inetpub\wwwroot\myapp\web.config' is denied.

inetpub次に、フォルダーとそのサブフォルダーに適切なセキュリティ アクセス許可を設定しようとしました。これは何の役にも立たず、通常の MVC リクエストが機能しているため、問題がセキュリティ関連であるとは思えません。

次に、Sysinternals Process Monitorw3wp.exeを開始して、リクエスト中に何が行われているかを確認しました。結局のところ、IIS は次の場所を探しweb.configます。

C:\inetpub\wwwroot\myapp\api\web.config
C:\inetpub\wwwroot\myapp\api\mycontroller\web.config

もちろん、そこはありませんweb.config

両方のルートを認識するように IIS を設定するにはどうすればよいですか?

4

1 に答える 1

1

これはルーティングの問題ではないと思います。問題は、IIS に与えられたアクセス許可です。このエラーが時々発生します。実行しているアプリ プール ID によっては、そのエンティティにアクセス許可を提供する必要があります。ここに非常に詳細な説明へのリンクがあります

IIS AppPoolIdentity とファイル システムの書き込みアクセス許可

基本的に、プロジェクト フォルダーを右クリックしてプロパティに移動し、セキュリティ タブをクリックすると、グループ名またはユーザー名が表示されます。これらは、そのディレクトリに対して読み取りおよび/または書き込みアクションを実行できるエンティティです。[編集]、[追加] の順にクリックします。ここから、「選択するオブジェクト名を入力してください」通常、IIS は IIS_IUSRS の下に続きます。これはアプリケーション プールの構成によって異なります。

これが役立つことを願っています!

于 2013-09-20T21:29:48.247 に答える