Мне нужно, чтобы проект WebAPI работал под другим базовым путем, чем обычно. Я создал простой проект под Visual Studio, который использует WebAPI и ASP.NET. 5.установить базовый путь в IISExpress и webapi в ASP.NET 5
Под базовым путем, установленным в http://localhost:38170/, мой проект отлично работает, и я могу получить значения от тестового контроллера (http://localhost:38170/api/values). На данном этапе моя конфигурация IIS Экспресс:
<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>
Я попытался изменить App URL в свойствах проекта, чтобы отразить мою потребность: http://localhost:38170/xxx
Сейчас работает проект и ударять http://localhost:38170/xxx/api/values результаты в 404. Попытка http://localhost:38170/api/values возвращает значения от контроллера, как будто ничего не изменилось. Я заметил, что изменения в Visual Studio не отражены в конфигурации IIS Express (я не знаю, должны ли они быть ...) каким-либо образом.
Я попытался изменить путь на IISExpress вручную, как в этой теме: Creating virtual directories in 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 Error (ошибка конфигурации), и это довольно хорошо - я не планирую эту работу
http://localhost:38170/xxx/api/values - 502,3 - Bad Gateway на удар 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/*
, но ничего не работает.
EDIT: Чтобы уточнить вопрос.
Как настроить WebAPI на ASP.NET 5 (ядро ASP.NET) на IISExpress с помощью httpPlatformHandler и Kestrel для установки базового пути, отличного от root.
Просто проверить - попробуйте выйти/закрыть/перезапустить IISExpress (из значка на панели инструментов). Имеются сообщения о проблемах с IIS, [например, этот случай, когда я нажимаю] (http://stackoverflow.com/q/34028341/304683). Не сказать, что это связано (я не знаю), так что просто проверка работоспособности (о том, почему изменения в свойствах VS, похоже, не установлены) – EdSF
@EdSF, к сожалению, проверил это сто и один раз - результаты, как описано – pg0xC