0

Мне нужно, чтобы проект 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.

+0

Просто проверить - попробуйте выйти/закрыть/перезапустить IISExpress (из значка на панели инструментов). Имеются сообщения о проблемах с IIS, [например, этот случай, когда я нажимаю] (http://stackoverflow.com/q/34028341/304683). Не сказать, что это связано (я не знаю), так что просто проверка работоспособности (о том, почему изменения в свойствах VS, похоже, не установлены) – EdSF

+0

@EdSF, к сожалению, проверил это сто и один раз - результаты, как описано – pg0xC

ответ

1

Вы повредите файл, так как ваша модификация выполняет мои права на правила конфигурации IIS Express.

Я предлагаю вам использовать умный инструмент, такой как Jexus Manager, для управления им, а затем вы можете синхронизировать проект Visual Studio с правильным URL-адресом.

Например, ожидается 404, так как ваш тег приложения имеет путь, установленный в /, поэтому нет приложения или виртуального каталога для обслуживания xxx.

Ожидается также 500.19, так как при добавлении действительного виртуального каталога с именем xxx вы удалили корневой виртуальный каталог. Это абсолютно неправильно, поскольку должен присутствовать корневой виртуальный каталог.

+0

, и что делать вы предлагаете делать?Jexus Manager умирает без предупреждения, поэтому это не вариант. Если корневой виртуальный каталог должен присутствовать так, где я должен его указывать? - там нет другого приложения. Кроме того, httpPlatformHandler, похоже, работает и правильно обрабатывает запросы - я проверил журналы. Он просто получает плохие запросы от пустельги или вообще не запрашивает (я не уверен) – pg0xC

+0

@ pg0xC, восстановить файл конфигурации в файл 404, а затем добавить новый виртуальный каталог xxx. Корневой виртуальный каталог может указывать в любом месте (но не должен содержать web.config, чтобы не вводить другие настройки). –

+0

Практически там. Ситуация немного изменилась - я получаю 404 на http: // localhost: 38170/xxx/api/values, потому что моя маршрутизация по-прежнему хочет служить для url xxx/api/values. Апи не работает, но это еще одна проблема. Спасибо @Lex Li – pg0xC

 Смежные вопросы

  • Нет связанных вопросов^_^