在Windows Server上调用ASP .Net Core 2.1 Web API时出现“ 500-内部服务器错误”

时间:2018-09-11 06:59:59

标签: 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 Standard)。该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 路径,以便文件夹确实存在...

我在 Startup.cs 中也有 app.UseDeveloperExceptionPage(); ,但是我没有得到更多有关简单的500个内部服务器错误的信息

这是我的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 Hosting Microsoft .NET Core Runtime-2.1.1 (均为x86)和x64)。

就像我说的那样,它可以在我的开发PC和旧服务器上使用,因此在新服务器上一定是配置问题。除了500 Internal Server Error之外,还有什么方法可以获取更详细的错误信息?谢谢...

1 个答案:

答案 0 :(得分:0)

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

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

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

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.1&tabs=aspnetcore2x

您可能需要安装Visual C++ 2015 Redistributable on the server

要获取日志,请更改“ IncludeScopes”:true,在appsettings.json日志记录部分中,还要检查事件查看器。

希望您会发现这很有用。