ASP.net Core WebAPI не запускается за IIS - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь разместить ASP.net Core WebAPI, как говорят в Документах Microsoft: Хостинг в ASP.NET Core

Конфигурация

Iя запускаю IIS 10 в Windows Server 2016, где установлены Web Deploy 3.6, .Net Core Runtime 2.0.7 и .NET Core Server Hosting Bundle.

Веб-API настроен следующим образом:

Program.cs:

public static IWebHost BuildWebHost(string[] args) {
    IConfigurationRoot config = new ConfigurationBuilder()
        .SetBasePath(Directory.GetCurrentDirectory())
        .AddJsonFile("appsettings.json")
        .Build();

    return WebHost.CreateDefaultBuilder(args)
              .UseConfiguration(config)
              .UseStartup<Startup>()
              .UseKestrel(opt => {
                  opt.Listen(IPAddress.Loopback, 4000);
              })
              .UseIISIntegration()
              .Build();
}

web.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
    <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>
    <aspNetCore processPath="dotnet" arguments=".\Agent.DuZu.Web.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>

В IIS активирован основной модуль ASP.net, и у меня есть сайтс привязкой к порту 80.

Проблема

Я публикую приложение на сервере с WebDeploy, но приложение просто не запустится.Нет ни вывода, ни ошибки.Я не уверен, что я что-то упустил или моя конфигурация просто не удалась.Также хотелось бы узнать, есть ли способ увидеть работающее приложение.

Ответы [ 2 ]

0 голосов
/ 06 июня 2019

Это также произошло для меня в новом проекте, в котором модуль был указан как AspNetCoreModuleV2:

  <handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
  </handlers>

Предположительно, я не установил его. Я видел, что на моем более старом сайте .NET Core этот модуль не был V2. Удаление V2 из спецификации модуля исправило это в моем случае:

  <handlers>
    <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
  </handlers>
0 голосов
/ 02 мая 2018

С помощью моего коллеги я нашел решение:

Разрешения:

IIS должен иметь разрешения для папок сайта.Нужно проверить, что у пользователя пула приложений есть разрешение на папки.

Я предоставил «ЛОКАЛЬНЫЙ СЕРВИС» в моей папке «C: \ inetpub \ sites», где находятся все мои сайты, а также напул приложений, который я использую.

web.config

WebDeploy перезаписал web.config и изменил его на:

<aspNetCore processPath=".\Agent.DuZu.Web.exe" 
    arguments=".\Agent.DuZu.Web.dll"
    stdoutLogEnabled="true" 
    stdoutLogFile=".\logs\stdout" 
    forwardWindowsAuthToken="false" />

Таким образом, журнал stdout показалОшибка аргумента.Решением этой проблемы является изменение processPath на "dotnet", как описано в этом вопросе .

<aspNetCore processPath="dotnet" 
    arguments=".\Agent.DuZu.Web.dll"
    stdoutLogEnabled="true" 
    stdoutLogFile=".\logs\stdout" 
    forwardWindowsAuthToken="false" />

Еще одна вещь, которую следует упомянуть, - это то, что папка "logs" должна быть создана,потому что IIS не будет делать это самостоятельно.

...