0

通常とは異なるベース パスで 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 をセットアップし、ルート以外のベース パスを設定する方法。

4

1 に答える 1