部署在iis上的asp.net核心应用程序遇到500内部服务器错误

本文关键字:遇到 内部 服务器 错误 应用程序 核心 iis 上的 asp net 部署 | 更新日期: 2023-09-27 18:09:32

:(哎呀。500内部服务器错误启动应用程序时出错。

当我将数据库功能添加到我的asp.net核心应用程序并将其部署到iis时,出现了这条消息。当我在Visual Studio中开发它时,一切都很顺利。但在部署之后,出现了此错误消息。

我尝试使用dotnet myapp.dll在deploy文件夹中运行我的应用程序,发现它运行得很好。问题很可能与iis有关。我试图将<compilation debug="true">..</compilation>添加到web.config中,但似乎没有用。实际问题是什么,或者有没有其他方法可以查看详细的错误信息来帮助找出发生了什么?

部署在iis上的asp.net核心应用程序遇到500内部服务器错误

  1. 将stdoutLogEnabled="false"更改为true,然后检查stdoutLogFile=".''logs''stdout"处的日志。那里的错误可能会告诉您一些信息。

  2. 检查您是否使用ASPNETCORE_Environment环境变量设置了正确的"环境名称",以便使用正确的设置(如连接字符串(。默认情况下,您的机器上有"开发"环境。

  3. 您可以使用错误处理中间件来显示等异常

    app.UseDeveloperExceptionPage();
    

也有同样的问题。这是帮助我的指南。注意,我不想在web服务器上安装"运行时",而是将所有必要的文件作为一个独立的应用程序部署。以下是缩写形式的步骤:

  1. 在本地电脑上,根据服务器确定要发布的版本。我的目标是WindowsServer2008R2,这意味着我需要发布win7-x64。在项目目录中打开命令提示符,然后运行以下命令:

    dotnet发布-c版本-r win7-x64

    这将创建一个包含数百个dll、.exe和web.config的发布文件夹,这些文件位于:bin''Release ''netcoreapp2.0''publish

  2. 在装有IIS的web服务器上,转到此登录页。单击所需版本的链接。查找运行时和托管捆绑包的链接。单击下载并运行。

  3. 通过从提升的命令提示符运行以下命令重新启动IIS:

    net stop was

    net start w3svc

  4. 将本地发布文件夹中的所有文件复制到IIS服务器上所需的应用程序文件夹中。

  5. 在服务器上,打开IIS,然后像往常一样创建一个单独的AppPool和Application。对于AppPool,在"基本设置"下,将.NET Framework版本更改为"无托管代码"。确保IIS中的应用程序指向所需的文件夹和正确的AppPool。

  6. 在浏览器中测试您的web应用程序。

在我的情况下,我得到这个是因为我实际上没有在运行它的windows服务器上安装最新的"DotNetCore.2.0.0-WindowsHosting.exe"…所以它在我的本地机器上运行良好,在服务器上调试并出错了500次。

我还有其他非琐碎的问题要解决,升级也。。。如果可以的话,我建议你尽量避免。

Mark333下面的评论解决了我的问题。

易于阅读的报价:

"我使用的是Visual Studio提供的普通发布发现使用最新版本的托管捆绑包将修复问题+1microsoft.com/net/download/dotnet core/runtime-2.1.0-rc1">

我不得不安装1.1版本,因为我的应用程序有点旧,但Hosting Bundle修复了它。在我的情况下,我们部署到官方环境的Docker映像,但当我想在本地进行一些测试时,我会发布它,并让我的本地IIS提供它。

我的问题在安装.netcore最新版本时得到了解决:https://dotnet.microsoft.com/download/thank-you/dotnet-runtime-2.2.2-windows-hosting-bundle-installer

https://learn.microsoft.com/pt-br/aspnet/core/host-and-deploy/iis/index?view=aspnetcore-2.2#安装网芯托管捆绑包

工作起来很有魅力!

确保应用程序池对应用程序所在的文件夹具有权限。

我在Windows 2008 R2 Standard计算机上安装了DotNetCore.2.0.5-WindowsHosting.exe,并遇到了相同的http 500错误。日志记录没有帮助(生成了空白日志,事件查看器日志是通用的ErrorCode = 0x80070002(

我必须做两件事来解决我的问题:

  1. 授予ApplicationPoolIdentity用户(例如:IIS APPPOOL''AppPoolIdentityName(对网站目录和应用程序目录的读取权限
  2. 我不得不在服务器管理器下安装IIS ASP Core(这感觉很奇怪,但它起作用了!(

我遇到了同样的问题。

我的问题是,我到数据库的连接字符串没有在appsettings.production.json 中设置

并且内部服务器错误500是模糊的错误消息。

更改stdoutLogEnabled=true对我没有任何作用,所以我没有看到任何关于错误的信息。

我遇到了这个问题。问题是由于我的本地Sql Server实例造成的。不允许远程连接。因此,我手动重新启动了SQL实例,我的应用程序重新启动,运行良好。

我在执行AWS ec2实例引导时使用chocolatey启动dotnetcore windowshosting后遇到了类似的问题。

当我检查IIS模块时,AspNetCoreModule丢失了。

这解决了我的问题。https://github.com/aspnet/IISIntegration/issues/434

我不得不卸载巧克力包,重新启动机器并重新安装。

希望这能有所帮助!

在我的例子中,我创建了一个.NET 5单文件输出,得到:

500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.

问题是EXE文件由于某种奇怪的原因被保护软件(CrowdStrike Falcon(识别为病毒。在没有";单文件输出";选项解决了这个问题。

有一篇文章叫做;配置IIS、ASP.NET和SQL Server";我强烈推荐。我遵循了上面描述的步骤,我的asp.net核心应用程序现在与我的SQL数据库通信(在发布到IIS后(:

https://www.codeproject.com/Articles/674930/Configuring-IIS-ASP-NET-and-SQL-Server

在IIS之前安装dotnet托管捆绑包/dotnet运行时也会发生这种情况。

在这种情况下,请重新安装dotnet托管捆绑包/dotnet运行时。

为了能够看到异常的详细信息,我只需要将ASPNETCORE_ENVIRONMENT更改为";"发展";在";IIS Express";launchSettings.json文件中的概要文件。我需要创建相应的应用程序设置。Development.json文件来设置我的应用程序中所需的变量和数据。当环境为开发网核心时,默认发送详细异常。正如我们在官方文件中看到的那样。