通常とは異なるベース パスで WebAPI プロジェクトを動作させる必要があります。WebAPI と ASP.NET 5 を使用する Visual Studio で簡単なプロジェクトを作成しました。
ベース パスをhttp://localhost:38170/に設定すると、プロジェクトは正常に動作し、テスト コントローラー ( http://localhost:38170/api/values ) から値を取得できます。この段階で、IIS Express の構成は次のとおりです。
<site name="WebApi" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\WebApi\src\WebApi\wwwroot" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:38170:localhost" />
</bindings>
</site>
必要に応じて、プロジェクトのプロパティでアプリの URL を変更してみました: http://localhost:38170/xxx
プロジェクトを実行してhttp://localhost:38170/xxx/api/valuesを押すと、結果は 404 になります。 http://localhost:38170/api/valuesを試すと、コントローラーから値が返されます。Visual Studio での変更が IIS Express 構成に反映されていないことに気付きました (そうすべきかどうかはわかりません...)。
このスレッドのように、IISExpress のパスを手動で変更しようとしました: IIS Express で仮想ディレクトリを作成しています。
<site name="WebApi" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/xxx" physicalPath="C:\WebApi\src\WebApi\wwwroot" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:38170:localhost" />
</bindings>
</site>
結果は次のとおりです。
http://localhost:38170/api/values - 500.19 エラー (構成エラー) ですが、それはかなり問題ありません - これが動作する予定はありません
http://localhost:38170/xxx/api/values - 502.3 - httpPlatformHandler をヒットした際の不正なゲートウェイ
エラーは httpPlatformHandler 構成のどこかにあると思いますが、IIS Express と組み合わせて行う方法がわかりません。私のweb.configは次のとおりです。
<configuration>
<system.webServer>
<handlers>
<add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
</handlers>
<httpPlatform processPath="%DNX_PATH%" arguments="%DNX_ARGS%" stdoutLogEnabled="false" startupTimeLimit="3600"/>
</system.webServer>
</configuration>
パス属性の変更などのランダムな変更を試みましxxx/*
たが、何も機能しません。
編集:質問を明確にするために。
httpPlatformHandler と Kestrel を使用して IISExpress 上の ASP.NET 5 (ASP.NET Core) で WebAPI をセットアップし、ルート以外のベース パスを設定する方法。