Развернутое приложение Net Core выдает ошибку 404 на IIS - PullRequest
0 голосов
/ 13 февраля 2020

Я работаю над веб-приложением с Angular 7 в качестве внешнего интерфейса и Net Core 3.0 в качестве внутреннего. Все отлично работает в режиме разработки, и я могу вызывать URI из внешнего интерфейса, напрямую из браузера, а также из Postman https://localhost: 5001 / api / controller / params

Для демонстрации я должен сделать релиз прямо сейчас. Из CLI и Visual Studio (Ma c) все выглядит нормально: папка сгенерирована с путем project / bin / Release / netcoreapp3.0 / publish / со всеми файлами .dll, web.config и др. c.

Однако при публикации в IIS, если я звоню https://appname.myserver.com/api/controller/params или http, браузер выдает ошибку 404. Если я позвоню http://appname.myserver.com/, я получу синий экран IIS с приветственным сообщением на разных языках.

Конфигурация IIS следовала инструкциям Microsoft, найденным здесь: https://docs.microsoft.com/en-us/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-3.1&tabs=visual-studio

Я не публикую напрямую в IIS, поскольку у меня нет доступа к серверу, однако я удаленно контролировал процесс установки.

Я просматривал Интернет, и кто-то предложил чтобы сделать это в моем файле Program.cs:

    namespace BackEnd
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseIISIntegration();
                    webBuilder.UseKestrel();
                    webBuilder.UseUrls("http://localhost:5000", "https://localhost:5001");
                });
    }
}

И web.config выглядит следующим образом:

    <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\BackEnd.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

Вот приложение Хостинг.config:

<site name="backendv2.hawk-poslatinoamericana.com.mx" id="10" serverAutoStart="true">
            <application path="/" applicationPool="No Managed Code" enabledProtocols="http">
                <virtualDirectory path="/" physicalPath="C:\HostingSpaces\poslatino\backendv2.hawk-poslatinoamericana.com.mx\wwwroot" />
            </application>
            <bindings>
                <binding protocol="https" bindingInformation="169.57.1.244:5001:backendv2.hawk-poslatinoamericana.com.mx" sslFlags="0" />
                <binding protocol="http" bindingInformation="169.57.1.244:5000:backendv2.hawk-poslatinoamericana.com.mx" />
                <binding protocol="http" bindingInformation="169.57.1.244:5000:www.backendv2.hawk-poslatinoamericana.com.mx" />
                <binding protocol="https" bindingInformation="169.57.1.244:5001:www.backendv2.hawk-poslatinoamericana.com.mx" sslFlags="0" />
            </bindings>
            <logFile directory="C:\HostingSpaces\poslatino\backendv2.hawk-poslatinoamericana.com.mx\logs" enabled="true" />
            <traceFailedRequestsLogging enabled="true" directory="C:\inetpub\logs\FailedReqLogFiles" maxLogFiles="50" />
            <limits connectionTimeout="00:04:00" />
        </site>

Но пока не повезло, и у меня нет идей.

1 Ответ

0 голосов
/ 14 февраля 2020

Согласно вашему описанию, я обнаружил, что вы связываете два домена с портом 5000 и 5001, а не с портом 80.

Если вы позвоните https://appname.myserver.com, он получит доступ к порту 443 сервера, а не к 5000 и 5001 порт. Если вы позвоните по номеру http://appname.myserver.com, он получит доступ к порту 80 сервера.

Кроме того, если вы хотите разместить основное приложение asp. net в IIS, вы должны просто создать веб-приложение, выполнив используя следующие шаги:

В системе хостинга создайте папку, в которой будут находиться опубликованные папки и файлы приложения. На следующем шаге путь к папке предоставляется IIS как физический путь к приложению. Дополнительные сведения о папке развертывания приложения и макете файла см. В ASP. NET Базовая структура каталогов.

В диспетчере IIS откройте узел сервера на панели «Подключения». Щелкните правой кнопкой мыши папку «Сайты». Выберите «Добавить веб-сайт» из контекстного меню.

Укажите имя сайта и укажите физический путь к папке развертывания приложения. Укажите конфигурацию Binding и создайте веб-сайт, нажав OK:

Примечание: порт 80, а не 5001

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...