Есть ли какой-нибудь способ запустить.Опубликованное веб-приложение NET Core через Kestrel на локальном хосте?

#asp.net-core #.net-core

#asp.net-core #.net-core

Вопрос:

Как я знаю, согласно документам Microsoft здесь, в Dotnet core ConfigureWebHostDefaults, веб-сервер Kestrel по умолчанию находится внутри проекта.

 public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
 

Таким образом, я могу использовать Dotnet Run в своем основном пути проекта (который содержит .sln) и запускать проект напрямую с помощью Kestrel без IIS Express, и он запускается (как я могу это сделать с IIS Express В VS). Но я хочу знать, есть ли какой-нибудь способ сделать это в моем выпуске (после публикации) на локальном хосте на сервере? Я успешно разместил свой проект с IIS на сервере, и он работает нормально, но из любопытства я запускаю Dotnet run свой корень публикации, и он возвращает:

Добро пожаловать в .NET Core 3.1! ——————— Версия SDK: 3.1.404

Телеметрия ——— Инструменты .NET Core собирают данные об использовании, чтобы помочь нам улучшить ваш опыт. Оно собирается корпорацией Майкрософт и предоставляется сообществу. Вы можете отказаться от телеметрии, установив для переменной среды DOTNET_CLI_TELEMETRY_OPTOUT значение «1» или «true», используя свою любимую оболочку.

Подробнее о .Телеметрия инструментов CLI NET Core: https://aka.ms/dotnet-cli-telemetry

—————- Изучите документацию: https://aka.ms/dotnet-docs Сообщить о проблемах и найти источник на GitHub: https://github.com/dotnet/core Узнайте, что нового: https://aka.ms/dotnet-whats-new Узнайте больше об установленном сертификате разработчика HTTPS: https://aka.ms/aspnet-core-https Используйте «dotnet —help», чтобы просмотреть доступные команды или посетить: https://aka.ms/dotnet-cli-docs Напишите свое первое приложение: https://aka.ms/first-net-core-app

Ответ №1:

После того, как вы создали проект, вы можете использовать dotnet whatever.dll команду «выполнить» для исходного кода:

https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-run

Команда запуска dotnet используется в контексте проектов, а не построенных сборок. Если вместо этого вы пытаетесь запустить зависящую от платформы DLL-библиотеку приложений, вы должны использовать dotnet без команды. Например, для запуска myapp.dll , использовать:

dotnet myapp.dll

Комментарии:

1. Да, я использовал without . DLL!! Мой плохой.

Ответ №2:

Это зависит от того, как ваш ASP.NET Основное приложение опубликовано. Предполагая, что вам не нужно настраивать таргетинг на определенную платформу, вы можете сначала опубликовать кроссплатформенный двоичный файл, а затем использовать dotnet его непосредственно в сборке, содержащей вашу основную программу.

В качестве примера, скажем, у вас есть ASP.NET Основное приложение с именем MyApp без каких-либо конкретных настроек в вашем MyApp.csproj файле проекта. Вы можете опубликовать его, запустив dotnet publish -c Release его по MyApp.csproj пути к файлу: опубликованный выпуск будет содержать сборки вашего приложения, в том числе MyApp.dll и ту, которая содержит вашу основную программу, с которой запускается Kestrel. Из этого расположения вы можете запустить dotnet MyApp.dll , чтобы запустить свой ASP.NET Основное приложение.