Запуск приложения ASP.NET 4.6 в док-контейнере - сайт всегда 404s - PullRequest
0 голосов
/ 22 февраля 2019

Я пытался заставить приложение ASP.NET 4.6 запускаться в контейнере Windows Docker, и хотя запуск IIS с веб-сайтом по умолчанию был довольно простым, попытка запустить собственное приложение оказалось трудной,Всякий раз, когда я пытаюсь загрузить свое приложение, оно возвращает файл 404. Не найден.

Некоторые предыстории: приложение, которое я пытаюсь запустить , имеет , которое должно быть установлено в «Веб-сайте по умолчанию» с обоимиприложение и приложение SharedContent, установленные в IIS, где SharedContent также - субприложение основного приложения.

Это приводит к 3 вызовам, которые устанавливают приложение под IIS:

RUN ["powershell", "New-WebApplication -Name MvcCompaniesV2 -Site 'Default Web Site' -PhysicalPath C:/inetpub/wwwroot/MvcCompaniesV2 -ApplicationPool DefaultAppPool"]
RUN ["powershell", "New-WebApplication -Name SharedContent -Site 'Default Web Site' -PhysicalPath C:/inetpub/wwwroot/SharedContent -ApplicationPool DefaultAppPool"]
RUN ["powershell", "New-WebApplication -Name MvcCompaniesV2/SharedContent -Site 'Default Web Site' -PhysicalPath C:/inetpub/wwwroot/SharedContent -ApplicationPool DefaultAppPool"]

После того, как я возился почти целый день, я запутался.Мне удалось установить IIS WebManagement и я могу подключиться к своему контейнеру с помощью диспетчера IIS, и я вижу, что мои сайты правильно настроены, за одним исключением: строки подключения и правила перезаписи из web.config не отображаются в настройках IIS, например:он не может получить доступ к файлу конфигурации.IIS работает от имени пользователя IIS APPPOOL \ DefaultAppPool, а в папку wwwroot добавлен IIS_IUSRS в свой ACL (как по умолчанию).

Это мой файл докера:

FROM microsoft/aspnet:4.7.2-windowsservercore-1803

EXPOSE 80
EXPOSE 8172

EXPOSE 4020 4021 4022 4023

# WebManagement stuff
RUN ["powershell.exe", "Install-WindowsFeature NET-Framework-45-ASPNET"]  
RUN ["powershell.exe", "Install-WindowsFeature Web-Asp-Net45"]
RUN ["powershell.exe", "Install-WindowsFeature web-mgmt-service"]

RUN ["powershell.exe", "Set-ItemProperty -Path 'HKLM:/SOFTWARE/Microsoft/WebManagement/Server' -Name 'EnableRemoteManagement' -Value 1"]
RUN ["powershell.exe", "set-service -Name WMSVC -StartupType Automatic"]
RUN ["powershell", "start-service WMSVC"]
RUN ["powershell", "net user patrick l0lp@ssw0rd /add"]
RUN ["powershell", "net localgroup administrators patrick /add"]

# Rewrite module
ADD https://download.microsoft.com/download/C/9/E/C9E8180D-4E51-40A6-A9BF-776990D8BCA9/rewrite_amd64.msi rewrite_amd64.msi
RUN ["powershell" , "Start-Process msiexec.exe -ArgumentList '/i', 'rewrite_amd64.msi', '/quiet', '/norestart' -NoNewWindow -Wait"]

# Remote debugger
RUN Invoke-WebRequest -OutFile c:\rtools_setup_x64.exe -Uri https://aka.ms/vs/15/release/RemoteTools.amd64ret.enu.exe;
RUN & 'c:\rtools_setup_x64.exe' /install /quiet

ADD bin C:/inetpub/wwwroot/

RUN ["powershell", "New-WebApplication -Name MvcCompaniesV2 -Site 'Default Web Site' -PhysicalPath C:/inetpub/wwwroot/MvcCompaniesV2 -ApplicationPool DefaultAppPool"]
RUN ["powershell", "New-WebApplication -Name SharedContent -Site 'Default Web Site' -PhysicalPath C:/inetpub/wwwroot/SharedContent -ApplicationPool DefaultAppPool"]
RUN ["powershell", "New-WebApplication -Name MvcCompaniesV2/SharedContent -Site 'Default Web Site' -PhysicalPath C:/inetpub/wwwroot/SharedContent -ApplicationPool DefaultAppPool"]

# ErrorPages mode to off
RUN ["powershell", "Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT' -filter 'system.web/customErrors' -name 'mode' -value 'Off'"]
RUN ["powershell", "Set-WebConfigurationProperty -filter 'system.webServer/httpErrors' -name 'errorMode' -value 'Detailed'"]
RUN ["Powershell", "Set-WebConfigurationProperty -pspath 'IIS:\Sites\Default Web Site\MvcCompaniesV2' -filter 'system.webServer/httpErrors' -name 'errorMode' -value 'Detailed'"]

ENTRYPOINT ["powershell", ""]

Есть идеи, как я могу устранить эту проблему?Как можно видеть, я изменил режим errorPages для IIS и .NET на подробный, но всякий раз, когда я открываю MvcCompaniesV2, я все равно получаю очень ограниченную страницу с ошибкой (https://imgur.com/a/jvj9r7f). У меня немного не получается, что я могупопробуйте устранить эту проблему.

Я попробовал пример страницы asp.net (которая работает непосредственно под «Веб-сайтом по умолчанию» и работает нормально из коробки »).

РЕДАКТИРОВАТЬ: Когда я присоединяю удаленный отладчик к своему проекту, он разрывается с ArgumentException внутри кода платформы:

System.ArgumentException
  HResult=0x80070057
  Message=The parameter 'C:/inetpub/wwwroot/MvcCompaniesV2\' is invalid.
Parameter name: C:/inetpub/wwwroot/MvcCompaniesV2\

1 Ответ

0 голосов
/ 22 февраля 2019

Я исправил эту проблему, исправив искаженный PhysicalPath из вызовов New-WebApplication.ArgumentException отладчика дал его, IIS не терпит / в путях.После обновления до C:\\inetpub\\wwwroot\\MvcCompaniesV2 проблема исчезла.

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