ASP.NET核心托管 - 500内部服务器错误

时间:2017-01-07 21:44:48

标签: asp.net-core web-hosting internal-server-error

我正在尝试使用支持ASP.NET Core的托管服务提供商发布ASP.NET Core项目。我收到500内部服务器错误,我认为这是非常常见的。所以,我搜索了互联网和各种论坛,然后我检查了web.config中的processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%",他们看起来是用processPath="dotnet" and arguemnts=".\MyApplication.dll"正确转换的。

我还检查了connectionString,它指向正在运行的生产数据库服务器。我通过将connectionString更改为生产数据库并在本地运行项目来确认数据库连接。它有效,我可以访问生产数据库。

我也试图通过在我的Startup.cs中使用以下内容来获取错误信息(无论env如何):

app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
app.UseBrowserLink();

我也在web.config中启用了stdoutLog,但我也看不到该文件夹​​:

stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout"

我还尝试将launchSettings.json中的applicationUrl和launchUrl更改为我的prl Url,但这并没有起作用。

因此,500内部服务器错误拒绝消失,我仍然没有任何有用的错误消息。该页面只是说:

糟糕。 500内部服务器错误 启动应用程序时出错。

如果有人能帮到我,我真的很感激。

8 个答案:

答案 0 :(得分:22)

  

我还在web.config中启用了stdoutLog,但是我没有看到该文件夹​​:

     

stdoutLogEnabled =“true”stdoutLogFile =“。\ logs \ stdout”

这里有一个技巧 - 您必须手动创建文件夹logsstdout - 然后只有IIS才会在logs文件夹中创建日志文件(不是stdout正如你所料) - 不要问我为什么,因为我不知道为什么;)


  

糟糕。 500内部服务器错误启动应用程序时出错。

通常,意味着Startup.cs中的配置问题 - 最常见的问题包括数据库本身的问题,迁移问题(如果使用Code First方法),appsettings.js问题,社交登录问题凭证(如缺少SecretKey)......

请参阅.\logs\stdout中的日志文件 - 这是查找问题详情的最快捷方式:)


  

app.UseDeveloperExceptionPage();

     

app.UseDatabaseErrorPage();

这些将在您的WebApp完全启动后运行,但不能在启动应用程序时运行。

答案 1 :(得分:4)

感谢Lukasz的评论。我能够看到日志,并声明必须提供" ClientId选项"。问题出在UserSecrets上。由于secrets.json仅在开发中可用,因此在Production中没有发现任何秘密。一旦我在appSettings.json中获得了秘密,它就可以正常工作。

此外,要在Local环境中复制它,只需转到Project属性并将环境变量ASPNETCORE_ENVIRONMENT更改为' Production'并在当地运行。这将在本地复制500内部服务器错误,您将收到错误消息。

答案 2 :(得分:2)

我想在@Lukasz Makowej的回答中添加更多信息。

我找到了为什么必须创建文件夹的原因,在microsoft文档中据说:

stdoutLogFile - 可选字符串属性。

“.....路径中提供的任何文件夹必须存在才能让模块创建日志文件....”

所以你必须自己创建:) 在这里查看:

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.0

我还必须说,在我的情况下,我必须验证网站是否有权访问“日志”文件夹。

答案 3 :(得分:1)

此外,请确保已安装ASP.NET Core Windows Server Hosting捆绑包。这会在IIS和Kestral服务器之间创建一个反向代理。

更多信息:

https://docs.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x#tabpanel_tfsY37MhAQ_aspnetcore2x

答案 4 :(得分:1)

确保您的web.config正确。语法上不错的web.config引用了服务器上没有的模块(重写),使我不止一次被踩到。除了500响应错误之外,任何地方都没有错误消息。

答案 5 :(得分:0)

Std日志对我不起作用,我必须从服务器和本地卸载所有.ENT Core运行时/ SDK版本以安装最新版本,并且在从头开始发布所有内容后才能正常工作。

另一有用的方法是将IIS应用程序绑定到端口5000,而没有任何DNS,因此它实际上向我显示了http://localhost:5000上的错误

答案 6 :(得分:0)

在web.config文件中,将modules =“ AspNetCoreModuleV2”更改为modules =“ AspNetCoreModule”

并观看此视频 https://www.youtube.com/watch?v=clCR3k6kkD8

答案 7 :(得分:0)

昨天遇到此问题,我们也没有日志记录,也没有事件日志消息。 然后,我们通过IIS管理器检查了站点的身份验证设置,以再次检查设置。然后 pop 突然弹出,并显示一条错误消息“ XXXX行上的错误”。 原来,配置部分已锁定在服务器级别的网站配置中。

因此,请尝试在服务器级别解锁相关的IIS配置设置,如下所示:

  • 打开IIS管理器
  • 在“连接”窗格中选择服务器
  • 在主窗格中打开配置编辑器
  • 在``部分''下拉列表中,选择要解锁的部分,例如system.webServer =>安全=>身份验证

  • 在右窗格中单击“解锁属性”

  • 重复其他需要解锁的设置
  • 重新启动IIS(可选)-在“连接”窗格中选择服务器,然后在“操作”窗格中单击“重新启动”