Мне нужно, чтобы проект WebAPI работал с другим базовым путем, чем обычно. Я создал простой проект под Visual Studio, который использует WebAPI и ASP.NET 5.
Если для базового пути задано значение 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/*
, но ничего не работает.
РЕДАКТИРОВАТЬ: чтобы прояснить вопрос.
Как настроить WebAPI на ASP.NET 5 (ASP.NET Core) на IISExpress с помощью httpPlatformHandler и Kestrel, чтобы установить базовый путь, отличный от корневого.