Хостинг. Net Базовое приложение и Angular приложение на веб-сайте IIS по умолчанию - PullRequest
1 голос
/ 13 апреля 2020

Я использую ASP. net базовый Boilerplate с angular. Я попытался разместить оба приложения на отдельном веб-сайте для Angular и веб-сайте для. NET ядра под локальным хостом IIS без проблем.
:
Но Когда я хочу развернуть свое приложение на publi c, я столкнулся с этой проблемой :
1 - У меня есть только один опубликованный c IP, который перенаправляет на веб-сайт IIS по умолчанию, и у каждого приложения есть свой порт.
** Таким образом, интерфейс и сервер должны размещаться в веб-сайт IIS по умолчанию с другим портом.

применимо для. NET core и Angular? **

Обновление

А вот мой appsetting. json

{

  "ConnectionStrings": {
    "Default": "Server=localhost\\SQLEXPRESS; Database=MyDb;User Id=admin;Password=1234"
  },
  "App": {
    "ServerRootAddress": "http://localhost:21021/",
    "ClientRootAddress": "http://localhost:4200/",
    "CorsOrigins": "http://localhost:4200,http://localhost:8080,http://localhost:8081,http://localhost:3000"
  },
  "Authentication": {
    "JwtBearer": {
      "IsEnabled": "true",
      "SecurityKey": "MyApp_C421AAEE0D114E9C",
      "Issuer": "MyApp",
      "Audience": "MyApp"
    }
  }
}

Обновление 2

Angular web.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <staticContent>
      <remove fileExtension=".json" />
      <mimeMap fileExtension=".json" mimeType="application/json" />
      <mimeMap fileExtension="woff" mimeType="application/font-woff" />
      <mimeMap fileExtension="woff2" mimeType="application/font-woff" />
    </staticContent>
    <!-- IIS URL Rewrite for Angular routes -->
    <rewrite>
      <rules>
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Angular appconfig.production . json

{
  "remoteServiceBaseUrl": "http://localhost:21021",
  "appBaseUrl": "http://localhost:4200",
  "localeMappings": [
    {
      "from": "pt-BR",
      "to": "pt"
    },
    {
      "from": "zh-CN",
      "to": "zh"
    },
    {
      "from": "he-IL",
      "to": "he"
    }
  ]
}

Ответы [ 2 ]

1 голос
/ 13 апреля 2020

Вот несколько шагов:

Предварительное условие

Псевдоним клиента => имя пути для клиентского приложения, которое необходимо для добавления приложения в iis

Псевдоним службы => путь имя для приложения-службы, которому необходимо добавить приложение в iis

  1. Download. NET Core 3.0 Runtime & Hosting Bundle для Windows или вы можете найти точную версию в соответствии с вашим проектом https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-aspnetcore-3.0.0-windows-hosting-bundle-installer
  2. Для настройки инфраструктуры Angular 8 в редакторе клинического контента требуется установка расширения IIS «URL Rewrite» https://www.iis.net/downloads/microsoft/url-rewrite

Front End:

Создайте angular run ng build --prod --base-href = / client-alias /

Go для Веб-сайт по умолчанию в IIS

Добавить приложение

Добавить псевдоним и указать физический путь к папке dist в angular приложение

Вы можете проверить это http://localhost/client-alias

Back End (https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.1#create - the-iis-site )

Publi sh проекта API и, таким образом, мы можем скопировать содержимое в новое веб-приложение API Service.

Создание пула приложений с. net CLR-версией для Без управляемого кода

В IIS создайте новое веб-приложение для API-сервиса с пулом приложений, добавленным на шаге 9, и физическим путем к опубликованной папке, как на шаге 8.

Теперь эти два приложения работают как http://127.0.0.1/client-alias и http://127.0.0.1/service-alias

Вы можете сделать свой IP (8080) publi c с нет другого открытого порта.

1 голос
/ 13 апреля 2020

Только ваш angular веб-сайт должен быть опубликован c. Каждому сайту IIS нужен уникальный порт. https://docs.aspnetzero.com/en/aspnet-core-angular/latest/Deployment-Angular-Publish-IIS

Также проверьте на своем веб-сайте IIS настройки приложения. json для

"App": {
    "ServerRootAddress": "http://localhost:21021/", -> Host 
    "ClientRootAddress": "http://localhost:4200/", -> Angular
    "CorsOrigins": "http://localhost:4200" -> your domain, https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-3.1

},

Если у вас есть объединили ваш Angular и хост-проект: https://aspnetboilerplate.com/Pages/Documents/Zero/Startup-Template-Angular#merged -проект

...