Публикация.NETCore 2 API и хост на IIS
Я создал.net Core 2 API и опубликовал его на сервере.
Структура файла выглядит очень странно по сравнению с обычной структурой.Net MVC
Нормальная структура, с которой я знаком
И это структура развернутого API.NET CORE 2
Теперь, если я просто попытаюсь преобразовать эту папку в приложение, похожее на обычное приложение ASP.NET, оно не будет работать.
Я установил пакет.NET Core Windows Server Hosting на сервер, но мне все еще чего-то не хватает.
Куда вы добавляете этот код для включения IISIntegration?
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
1 ответ
Этот код идет в Program.cs, но это по умолчанию, так что вы уже должны быть в порядке.
Файловая структура ASP.NET Core отличается от MVC 5, но все это работает примерно так же, как только вы установите.NET Core Hosting Runtime. Вы помещаете опубликованные файлы в каталог на веб-сервере. Затем вы настраиваете сайт в IIS для использования этого каталога. Единственное, что немного отличается, - это то, что вам нужно отредактировать пул приложений и установить для него "Нет управляемого кода" вместо конкретной среды выполнения.NET. Кроме этого, все это должно просто работать.
Тем не менее, если ваш скриншот представляет собой полный список файлов, то вам, похоже, не хватает некоторых вещей. Возможно, процесс публикации потерпел неудачу в какой-то момент. Попробуйте переиздать.
Фон
Принцип работы ASP.NET Core принципиально отличается от предыдущих веб-приложений ASP.NET. В то время как у вас были все модули HTTP и тому подобное, поступающие из монолитного.NET Runtime, установленного на компьютере, приложения ASP.NET Core полностью автономны. Основное приложение на самом деле является просто консольным приложением. В настройках IIS реальным веб-сервером является Kestrel, который либо встроен в приложение Core, либо доступен из среды выполнения.NET Core. IIS работает как обратный прокси. Передача запросов к Kestrel, а затем возвращение ответов, которые он получает от Kestrel (отсюда и "Неуправляемый код"). При развертывании IIS ваше приложение представляет собой DLL, но оно также может быть полностью автономным и развернуто как исполняемый файл. Дело в том, что да, файловая структура и тому подобное сильно отличаются, потому что она принципиально работает по-другому.