我们将许多ASP.Net Core 2.2应用程序之一迁移到了.NET Core 3.0。该应用程序在开发机器上运行良好。
当我在生产服务器(IIS)上运行它时,我一直收到HTTP错误500.30。我试图打开stdout日志以获取更多信息,但它只会创建一个没有任何日志文件的空文件夹。此外,事件日志中也没有关于任何错误的有用信息。
但是,当我运行OutOfProcess时,该应用程序在IIS上运行良好。由于我们的应用程序很大,而且很难查找任何错误,因此我创建了一个默认的MVC Web应用程序,而没有身份验证。 我将此应用程序部署在同一台IIS服务器上,并且得到了完全相同的行为-它运行OutOfProcess,但因InProcess失败。
有人建议解决此问题吗?我还在github上找到了几个条目,但没有帮助。
编辑-其他信息
我在VS2019中使用Release配置创建了一个文件夹发布配置文件,目标框架为netcoreapp3.0,deploymentMode:与框架有关,而TargetRuntime:win-x86。
在IIS上,我安装了ASP.NET Core / .NET Core:运行时和托管包。
答案 0 :(得分:3)
我也遇到过类似的问题。下面是我要解决的步骤。
在服务器中,转到已部署的文件夹后,在命令提示符下运行以下命令
dotnet project_name.dll
它显示实际错误。
就我而言,我忘记创建appsettings.json中提到的文件夹。
希望它会帮助您找到实际的问题。
答案 1 :(得分:0)
我在ASP.NET Core 3.0(或现在的3.1)文档中找到了解决问题的方法: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-3.1#create-the-iis-site
默认情况下,IIS上的应用程序池以64位运行。如果为任何cpu编译应用程序,那都没有关系。但是,如果应用程序是为32位显式编译的,则Web应用程序将崩溃。
在应用程序池的高级设置中启用32位模式:
答案 2 :(得分:0)
我从ASP.Net Core 2.1升级到3.0。对我来说,问题是
的规范 hostingModel="InProcess"
在web.config文件中。我删除了它,一切都很好。顺便说一句:出于某些未知的原因,我在stdout日志中什么也没得到。
答案 3 :(得分:0)
我在部署到 Azure 后遇到了同样的问题错误。部署成功后,网络应用没有启动。
然后我通过 Kudu 检查了已部署的文件以获取更详细的错误消息(您可以使用 App Service > Advanced Tools>DebugConsole Menu 或 https://.scm.azurewebsites.net/DebugConsole )
有关更多信息,您可以阅读this article.
检查后,我只有响应状态代码不表示成功:401(未授权)错误消息不够清楚。
就我而言,我使用 App 注册表是为了使用 Azure AD 身份验证。缺失的部分与我在应用服务计划中缺少对我的应用注册表的访问权限有关。
在授予贡献者访问权限然后重新启动应用后,问题解决了。