微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

500内部服务器错误Docker托管ASP.Net MVC Web应用程序已解决

如何解决500内部服务器错误Docker托管ASP.Net MVC Web应用程序已解决

我们有一个ASP.Net MVC应用程序,即使从Visual Studio以调试模式在本地运行,也可以正常运行。 我们有4个Class库项目和1个Web api项目。以下是我的docker文件

count

一旦我构建了docker文件,一切都将正确编译并且构建也将成功(所有Nuget软件包都将还原),并且我也能够创建容器。但是不幸的是,每当我尝试浏览到我的Web应用程序时(由于这是Windows,所以我获得了容器的IP地址),但是不幸的是,我立即收到HTTP 500内部服务器错误。我已经确保为详细的错误消息设置了HTTPERROR部分。

我导航到ip地址后,立即收到此500错误,不幸的是,日志(应用程序或系统)中没有多少可用,这将帮助我确定问题所在。有帮助吗?

以下是我用来构建和运行容器的命令:

FROM mcr.microsoft.com/dotnet/framework/sdk:4.8 AS build
workdir /app

# copy csproj and restore as distinct layers
copY *.sln .
copY xxxxx/*.csproj ./xxxxx/
copY yyyyyy/*.csproj ./yyyyy/
# copy everything else and build app
copY xxxxx/ ./xxxxx/
copY yyyyy/ ./yyyyy/
RUN nuget restore

workdir /app/GetThree
RUN msbuild /p:Configuration=Release

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8 AS runtime
workdir /inetpub/wwwroot
copY --from=build /app/xxxxx/. ./

要浏览该站点,我会获得IP地址(使用docker exec threecms ipconfig),然后使用以下地址进行浏览:http:// ipadress:8100

更新1:-

我使用以下dockerfile从上面的图像创建了另外一个图像(urlrewrite是URLREWRITE模块安装脚本)

docker build -f .\GetThree\Dockerfile -t threecms/cmsdocker:1.0 
docker run --name threecms --rm -it -p 8100:80 threecms/cmsdocker:1.0

URL REWRITE PS1脚本:

FROM threecms/cmsdocker:1.0
workdir C:/
copy urlrewrite.ps1/ .
RUN "Powershell ./urlrewrite.ps1"

RUN Install-WindowsFeature Web-Mgmt-Service; \

New-ItemProperty -Path HKLM:\software\microsoft\WebManagement\Server -Name EnableRemoteManagement -Value 1 -Force; \

Set-Service -Name wmsvc -StartupType automatic;

然后我使用以下命令运行容器:-

New-Item c:/msi -ItemType Directory
Invoke-WebRequest 'http://download.microsoft.com/download/C/F/F/CFF3A0B8-99D4-41A2-AE1A-496C08BEB904/WebPlatformInstaller_amd64_en-US.msi' -OutFile c:/msi/WebPlatformInstaller_amd64_en-US.msi
start-process 'c:/msi/WebPlatformInstaller_amd64_en-US.msi' '/qn' -Passthru | Wait-Process
cd 'C:/Program Files/Microsoft/Web Platform Installer'; .\WebpiCmd.exe /Install /Products:'UrlRewrite2,ARRv3_0' /AcceptEULA /Log:c:/msi/WebpiCmd.log

现在,每当我从浏览器进入应用程序时,它就会给我实际的错误消息,即:

docker run --name threecms2 -d cmswindfeature/cmswinfeature:3.0

更新:-2已解决

为了解决以上错误,我运行了以下Powershell脚本(添加必需的权限),并且Boom能够访问我的网站并可以正常工作:-

Access to the path 'C:\inetpub\wwwroot\App_Data\TEMP\PluginCache\umbraco-plugins.373F7AAE388A.hash' is denied.

解决方法

您需要从网站的应用程序池中查找网站正在运行的身份(默认情况下,这是应用程序池身份),然后授予该正确的权限。通常是IIS_IUSRS,您可以尝试以下步骤解决问题:

右键单击文件夹->转到安全选项卡->单击编辑->单击添加->单击高级 ->立即查找->授予IIS_IUSRS权限(完全控制)->单击“确定”->单击“确定”-> 在allow->中单击“完全控制”,然后单击“确定”。

注意:如果上述操作不起作用,请尝试向NETWORK,NETWORK SERVICE用户授予相同的权限

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。