Как создать IIS-сайт из powershell для размещения приложения .net core 2.0 - PullRequest
0 голосов
/ 26 июня 2018

Ожидаемый результат :

IIS правильно размещает мое приложение, и когда я перехожу на URL своего приложения (например, blabla / swagger), я вижу пользовательский интерфейс swagger, описывающий мое приложение

Задача

Когда я пытаюсь перейти к своему приложению, оно говорит:

HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.

Информация

Я собрал приложение в .net core 2.0 и смог запустить его через visual studio, размещенную на Kestrel. Однако мне нужно развернуть это приложение на разных серверах, и поскольку Kestrel не поддерживает имена хостов, мне нужно, чтобы оно размещалось в IIS. Когда я запускаю его через Kestrel, я могу получить к нему правильный доступ и, перейдя по адресу url / swagger, я могу увидеть правильную страницу swagger, которая описывает приложение. Мое приложение публикуется от visual studio. Это означает, что в его опубликованной папке есть все библиотеки, которые нужны приложению. Оно публикуется как зависимое от фреймворка приложение, а не как отдельное, но это не должно иметь значения.

Как повторить проблему

Поскольку мне нужно, чтобы этот день был размещен в IIS внутри контейнера Docker, я пытаюсь сделать его размещенным в IIS с помощью сценариев powershell. Чтобы сделать его размещенным в IIS, выполните следующие действия:

New-Website -Name 'myTestApp' -force -Port 8080 -PhysicalPath
'C:\Users\myUser\Desktop\Docker\PublishOutput' -ApplicationPool 'MyAppPoolTest'

Где C: \ Users \ myUser \ Desktop \ Docker \ PublishOutput - это путь к опубликованной папке, где Visual Studio публикует приложение. Заранее спасибо!

EDIT:

Это файл web.config, сгенерированный Visual studio при публикации:

<?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=".\Friss.CaseApi.Web.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
  </system.webServer>
</configuration>
<!--ProjectGuid: 313d542d-7676-4440-ae1b-22c6071f4309-->

И страница ошибки:

enter image description here

Ошибка 2:

enter image description here

1 Ответ

0 голосов
/ 26 июня 2018

Поскольку код ошибки - 0x80070005, а ошибка конфигурации - «Не удается прочитать файл конфигурации из-за недостаточных разрешений», необходимо предоставить разрешения IIS_IUSRS для папки PublishOutput.

Типичная ошибка - размещать содержимое файла из папки пользователя (C:\Users\someone) в IIS и забывать предоставлять такие разрешения.

Что касается других типичных проблем ASP.NET Core в IIS, прочитайте мое сообщение в блоге .

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