6

я создал два основных САШ веб и API проектов в рамках одного решения с использованием VS2015ASP.NET Основной виртуальный каталог в IIS Express

src 
| 
|-app.web 
| |-localhost:29999/ 
| |-startup.cs 
| 
|-app.api 
    |-localhost:29999/api/ 
    |-startup.cs (app.Map("/api", api => { /*configs and route*/ });) 

и модифицированный .vs\config\applicationhost.config файл, как показано ниже, чтобы использовать виртуальный каталог

<site name="ThreeCON.Web" id="2"> 
    <application path="/" applicationPool="Clr4IntegratedAppPool"> 
     <virtualDirectory path="/" physicalPath="C:\proj\src\app.web\wwwroot" /> 
     <virtualDirectory path="/api" physicalPath="C:\proj\src\app.api\wwwroot" /> 
    </application> 
    <bindings> 
     <binding protocol="http" bindingInformation="*:29999:localhost" /> 
    </bindings> 
</site> 

когда я пытаюсь получить доступ к URL-адресу localhost:29999/apiпри отладке, я получаю 404 not found ошибка (где localhost:29999/ работает нормально)

Но когда я развертываю то же самое для dev-сервера, создав виртуальный каталог в IIS, его рабочий тон. так как я могу исправить это для работы с IIS Express

ответ

1

Проблема в том, что виртуальный каталог не распознается, так как это Kestrel, который обрабатывает это, а не фактически IIS Express. В принципе, Kestrel не знает, что существует виртуальный каталог, поэтому он не может обслуживать его как таковой.

answer here и последующая ссылка в блоге, предоставленная в ответе, привели меня к такому выводу и разрешили эту проблему, с которой я столкнулся.