【问题标题】:internal server error when trying to access asp.net core app hosted in IIS 10尝试访问 IIS 10 中托管的 asp.net 核心应用程序时出现内部服务器错误
【发布时间】:2018-05-29 18:33:29
【问题描述】:

我使用 VS2017 创建了一个 ASP.NET core API 应用程序,只是一个简单的应用程序。我什至没有对其进行任何更改。它能够编译得很好,能够在 IIS Express 中调试得很好.. 你知道,默认 /api/values 返回 {value1, value2}.. 只是默认..

我尝试在 Windows 10 上的 IIS 10 中托管它。添加了一个应用程序池,其中 .NET CLR 版本设置为“无托管代码”,其他所有内容均保持默认设置。使用 VS2017,发布到文件夹,将 IIS 设置为指向该文件夹,将其设置为使用端口 8080。尝试在浏览器中使用 127.0.0.1:8080/api/values 和.. HTTP 错误 500.19 - 内部服务器错误访问它。为什么?我没有做什么?

在命令提示符下,键入 dotnet --info 显示版本为 2.1.200,.net 框架显示为 2.0.7。事实上,我什至可以通过键入“dotnet .dll”直接从命令提示符运行该应用程序,它会显示正在侦听端口 5000,并且我能够使用浏览器访问 127.0.0.1:5000/api/values 和{values1, values2} 将出现在浏览器中。但是为什么我不能使用 IIS 来托管呢?

谈到使用命令提示符使用 kestrel 运行应用程序时,我注意到一件奇怪的事情。在配置中设置参数,我能够使用 urls 来动态更改 kestrel 正在侦听的端口,并且我能够使用 dotnet .dll --urls http://*:5050 启用对 kestrel 的远程访问,例如,它工作正常.. 但是.. 当我将端口设置为 6000 或更高时,红隼会说它正在侦听该端口,但远程客户端将无法访问它。有没有人遇到过这个?使用 5000~5999 范围内的端口可以正常工作.. 为什么?

【问题讨论】:

    标签: asp.net-web-api .net-core


    【解决方案1】:

    确保以下几点:

    1. .NET Core Hosting Bundle 安装在托管服务器上 - https://www.microsoft.com/net/download/all
    2. 应用程序池 .NET CLR 版本设置为“无托管代码”
    3. 确保应用程序池标识用户对已发布文件夹具有读取权限。

    详情查看:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.0

    【讨论】:

    • 很抱歉给您带来麻烦.. 我意识到我没有安装托管包.. 这是在 IIS 中托管的最重要部分.. 但我错过了.. 很抱歉给您带来麻烦..非常感谢您启发我。 :)
    • granted.. 我现在可以使用像 7788 这样的有趣端口,而不是直接使用 kestrel 时被限制为 5000~5999.. 仍然不太明白为什么会有这样的限制.. 不要看到它在任何地方提到..但无论如何,谢谢你帮助我。 :)
    猜你喜欢
    • 2021-09-27
    • 2019-05-28
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2012-12-30
    • 2021-08-01
    相关资源
    最近更新 更多