私のWebアプリケーションは通常、IISのルートのサブディレクトリにあります。サブディレクトリが「app」であるとします
Visual Studioでデバッグしようとすると、パスは常にlocalhostをルートとし、サブディレクトリはありません。これは、アプリケーション内の私のパスを台無しにします。
プロジェクトのURLのフォームをhttp://localhost:port/
からhttp://localhost:port/app
に変更しようとすると、「仮想ディレクトリを作成できません」と表示されます。さて、それは私がapplication.configファイルからアプリケーションエントリを削除するまで、それが最初に言ったことです、そしてそれは成功しました。
「アプリケーションのルートURLを上書きする」を同じようにしようとすると、うまくいきません。エラー500.0内部サーバーエラーが発生するか、アプリケーションのweb.configファイルをルートと仮想サブディレクトリの両方に適用しているように動作する場合があります。これは、次のようなモジュールを追加しようとしているというエラーが発生するためです。すでに追加されています(おそらくルートにあります)。
Application.configでIIS Expressのプロジェクトの設定を編集しようとしましたが、設定の組み合わせが機能しないようです。
このプロジェクトがサブディレクトリのIISに展開されていることがわかっているのに、VisualStudioがプロジェクトをIIS Expressルートディレクトリに配置している理由がわかりません。デフォルトではディレクトリ構造と一致するはずだと思います。
これは今のように見えます:
<site name="app" id="5">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/app" physicalPath="C:\Users\username\Desktop\wwwroot\app" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:3056:localhost" />
</bindings>
</site>
アプリケーションパスを「/ app」に変更すると、構成が無効であるというエラー500.19が表示されます。同じことをして仮想ディレクトリタグを削除すると、IIS Expressを完全に起動できません。
私はここで答えを見つけました: https://stackoverflow.com/a/4733387/88409 異なる質問ですが、同じ答えです。
基本的に、子仮想ディレクトリだけでなく、子アプリケーションを作成する必要があります。
<site name="app" id="5">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\username\Desktop\wwwroot" />
</application>
<application path="/app" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Users\username\Desktop\wwwroot\app" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:3056:localhost" />
</bindings>
</site>
両方のアプリケーションエントリが必要なようです(つまり、ルートアプリケーション(物理的に空のダミーディレクトリであっても)と子アプリケーションが必要です)。ルートの最初のアプリケーションエントリを省略すると、エラー500.19「ページに関連する構成データが無効であるため、要求されたページにアクセスできません。」が表示されます。ただし、両方のアプリケーションエントリで、問題なく機能します。
私の知る限り、Visual Studioで上記の設定を作成する方法はないため、application.configで手動で編集する必要があります。したがって、これらの設定はWebアプリケーションプロジェクトファイル自体とは完全に関連付けられていません。これは適切ではありません、IMO。