【发布时间】:2019-02-15 15:06:33
【问题描述】:
我有一个 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 之外,还有什么方法可以获得更详细的错误信息?
【问题讨论】:
-
尝试从 cmd 或 power shell 手动运行您的 api。拨打电话并在此处发布错误消息。
-
在服务器上打开命令提示符并运行
dotnet.exe MyApp.dll。看看那里是否有任何错误。如果是这样,您将能够在命令提示符窗口中看到堆栈跟踪。如果不是,那么这是一个 IIS 问题。假设您已经正确安装了托管包,请确保您之后重新启动服务器,或者完全重新启动 IIS 服务(iisreset还不够)。 -
感谢爱德华和克里斯。我在命令提示符下使用 DOTNET RUN 在服务器上运行 API(在 IIS 或 IIS Express 中运行它吗??),我使用 Postman on(也从服务器,调用 localhost:5001/api/test)调用其端点。似乎一切正常 - 我可以在命令提示符窗口上看到 EF Core 生成和执行的 SQL 查询。但是没有任何东西可以回到 Postman。邮递员只是超时......但在命令提示符下一切似乎都很好。它没有显示任何错误...太奇怪了..
标签: asp.net-core iis asp.net-core-webapi asp.net-core-2.1 kestrel