Iis &引用;500-内部服务器错误“;在Windows服务器上调用ASP.Net Core 2.1 Web API时

Iis &引用;500-内部服务器错误“;在Windows服务器上调用ASP.Net Core 2.1 Web API时,iis,asp.net-core-webapi,asp.net-core-2.1,kestrel,asp.net-core-webapi-2.1,Iis,Asp.net Core Webapi,Asp.net Core 2.1,Kestrel,Asp.net Core Webapi 2.1,我有一个ASP.Net Core 2.1 Web API,我已将其部署到我们最近购买的新服务器上(运行Windows server 2016标准)。该API在我的开发PC和我们的旧服务器(运行Windows server 2012 R2)上都能完美运行。但在这台新服务器上,我遇到了以下错误: 500 - Internal server error. There is a problem with the resource you are looking for, and it cannot be

我有一个ASP.Net Core 2.1 Web API,我已将其部署到我们最近购买的新服务器上(运行Windows server 2016标准)。该API在我的开发PC和我们的旧服务器(运行Windows server 2012 R2)上都能完美运行。但在这台新服务器上,我遇到了以下错误:

500 - Internal server error.
There is a problem with the resource you are looking for, and it cannot be displayed.
我记得一年前,为了让它在我们的旧服务器上运行,我也做了很多努力。我最终成功了,但我不记得我做了什么!有没有办法获得有关此错误的更多信息?我已经检查了新服务器上的Windows事件查看器,但没有任何内容。另外,虽然我在web.config中获得了stdoutLogEnabled=“true”,但它不会生成日志-我创建了\logs\stdout路径,因此文件夹确实存在

我还有app.UseDeveloperExceptionPage()在我的Startup.cs中,但是我没有得到任何关于一个简单的500内部服务器错误的信息

这就是my web.config的外观:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
    <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\PropWorx.API.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
    </system.webServer>
  </location>
</configuration>
<!--ProjectGuid: cfa62a1f-c5f6-43f8-bcbe-04068e40b803-->

我还安装了Microsoft.NET Core 2.1.1-Windows Server HostingMicrosoft.NET Core Runtime-2.1.1(x86和x64)


就像我说的,它在我的开发pc和我们的旧服务器上工作,所以它在新服务器上一定是一个配置问题。除了500个内部服务器错误之外,还有什么方法可以获得更详细的错误信息吗?谢谢…

各种原因都可能导致此问题

如果这只发生在浏览器中(使用curl或postman),可能是飞行前请求错误,那么您需要在以下路径(C:\Windows\System32\inetsrv\UrlScan)修改UrlScan.ini(我假设在Windows 2016上没有更改),将选项添加到[AllowVerbs]

如果没有,请确保遵循Microsoft文档中提供的步骤:

您可能需要安装

要获取日志,请更改“IncludeScopes”:true,在appsettings.json日志部分,同时检查事件查看器


希望你会发现这很有用。

我终于找到了答案!我有一个过时版本的.Net核心Windows服务器托管包。我安装了2.1.1版。我删除了它,安装了2.1.4版,现在它可以工作了。谢谢大家的时间和支持。我真的很感激

尝试从cmd或powershell手动运行api。进行呼叫并在此处发布错误消息。在服务器上打开命令提示符,然后运行
dotnet.exe MyApp.dll
。查看是否在此处出现任何错误。如果是这样,您将能够在命令提示符窗口中看到stacktrace。如果不是,则是IIS问题。假设您已正确安装托管捆绑包,请确保您在之后重新启动服务器,或者完全重新启动IIS服务(
iisreset
还不够)。谢谢Edward和Chris。我在服务器上使用命令提示符下运行的DOTNET运行API(它在IIS或IIS Express中运行吗??),并在上使用Postman调用了它的一个端点(也从服务器调用)。看起来一切正常-我可以在命令提示符窗口看到EF Core生成和执行的SQL查询。但邮递员什么也没说。邮递员刚刚超时。。。然而,在命令提示符下,一切似乎都很好。它没有显示任何错误。。。真奇怪…谢谢你,凯格。是的,我安装了Visual C++ 2015。我尝试使用dotnetrun在服务器上本地运行API(不确定它是否在IIS或iisexpress中运行),并在服务器上使用Postman进行测试。看起来一切都很好——当我调用操作时,我可以看到EF Core生成并执行SQL查询。但邮递员什么也没说。邮递员刚刚超时。。。然而,在命令提示符下,一切似乎都很好。它没有显示任何错误。。。太奇怪了……而且,尽管我修改了web.config以包含stdoutLogEnabled=“true”,并在stdoutLogFile=“.\logs\stdout”中创建了相应的文件夹,并在appsettings.json的loggin部分添加了“IncludeScopes”:true,但它并没有记录任何内容。它甚至没有在事件查看器上记录任何错误:/不客气,appsettings.json中的LogLevel设置是什么?postman now中返回的HTTP代码是什么?如果您没有获取日志,这意味着您在执行请求时没有任何警告或错误,要查看所有日志,您需要将默认值更改为“信息”。我注意到一件事。。。在服务器上的IIS上,当转到我的站点并尝试打开任何链接(如“错误页面”或“日志记录”或IIS上的任何快捷方式)时,会出现以下错误:\\?\C:\inetpub\propworxapi\web.config我在appsettings.json中的默认日志级别为“警告”。我现在把它改成了“信息”,但它仍然没有记录任何东西。但我猜是因为没有错误。我认为API执行得很好。我怀疑这只是因为API的回复没有到达客户机(本例中是邮递员)。在postman上,它甚至没有返回HTTP状态码。。。。邮递员似乎只是暂停等待回复。当我使用DOTNET BUILD从cmd手动运行API时,一切似乎都正常执行。。。没有任何错误。