Я потратил два дня, чтобы заставить эту настройку работать, но, видимо, я еще не наткнулся на правильную комбинацию настроек. Из того, что я могу сказать, это должно быть возможно, но я просто не могу заставить его работать.
У меня есть 2 проекта ASP.NET Core 2.2. Один - это базовый веб-сервер, обслуживающий статические ресурсы, а другой - проект веб-API, обрабатывающий стандартные запросы REST. Довольно стандартные вещи. Просто для справки, мне скоро нужно будет добавить еще один проект API, но сейчас я просто хочу, чтобы этот «простой» случай работал.
В свойствах решения я сказал VS запустить оба проекта.
![solution properties](https://i.stack.imgur.com/LImCh.png)
Я также отредактировал файл applicationhost.config
, чтобы включить его как виртуальный каталог в IIS Express. Я хочу, чтобы что-нибудь с /api
было отправлено в проект контроллера API, а все остальное - в проект пользовательского интерфейса (статический ресурс).
<site name="Par.Web" id="2">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Source\repos\Par.Web\Par.Web.Ui" />
</application>
<application path="/api" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="C:\Source\repos\Par.Web\Par.Web.Api" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:57730:localhost" />
</bindings>
</site>
Я также отредактировал файл launchSettings.json
каждого проекта, добавив один и тот же URL в iisSettings
.
Из проекта пользовательского интерфейса:
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:57730/",
"sslPort": 0
}
},
А из проекта API:
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:57730/api/",
"sslPort": 0
}
},
Когда я запускаю решение, я получаю ответы от проекта пользовательского интерфейса, но любые запросы API возвращают ошибку 404. Кажется, что VS не запускает второй проект, потому что я также не вижу ничего в окне вывода из проекта API. Однако IIS Express, кажется, указывает, что все работает.
![iis applications](https://i.stack.imgur.com/pbfDk.png)
Я видел сообщения о том, что порты между applicationhost
и launchSettings
должны быть разными, но это не помогло. На самом деле кажется, что IIS Express перепишет информацию о привязке в applicationhost
, чтобы включить номер порта из launchSettings
, если они не совпадают. Я также попытался сделать виртуальный каталог API дочерним элементом приложения в applicationhost
, но это тоже не сработало. Я также предпринял другие отчаянные попытки довести его до что-то , например, запустил проекты вне процесса и создал отдельный сайт в applicationhost
, но все, что мне удалось сделать, это усугубить ситуацию.
Как я уже говорил, я видел другие посты об этом, но все, что я нашел, предназначено для более старых версий Visual Studio (или для кода Visual Studio), или проекты не являются .Net Core. Видимо, они имеют значение.
Любая помощь будет оценена.