我正在尝试使用支持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内部服务器错误 启动应用程序时出错。
如果有人能帮到我,我真的很感激。
答案 0 :(得分:22)
我还在web.config中启用了stdoutLog,但是我没有看到该文件夹:
stdoutLogEnabled =“true”stdoutLogFile =“。\ logs \ stdout”
这里有一个技巧 - 您必须手动创建文件夹logs
和stdout
- 然后只有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服务器之间创建一个反向代理。
更多信息:
答案 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”
答案 7 :(得分:0)
昨天遇到此问题,我们也没有日志记录,也没有事件日志消息。 然后,我们通过IIS管理器检查了站点的身份验证设置,以再次检查设置。然后 pop 突然弹出,并显示一条错误消息“ XXXX行上的错误”。 原来,配置部分已锁定在服务器级别的网站配置中。
因此,请尝试在服务器级别解锁相关的IIS配置设置,如下所示:
在``部分''下拉列表中,选择要解锁的部分,例如system.webServer =>安全=>身份验证
在右窗格中单击“解锁属性”