【问题标题】:.Net Core website - Bad Gateway (Connection Error).Net Core 网站 - 网关错误(连接错误)
【发布时间】:2017-07-07 22:56:39
【问题描述】:

我有一个以.NetCoreApp 1.1 为目标的网站,它在本地运行良好,但无法部署我收到完全无用的错误消息:

"502.3 网关错误。尝试路由时出现连接错误 请求。”

事件查看器说"Application 'MACHINE/WEBROOT/APPHOST/MYAPP' with physical root 'C:\inetpub\MyApp' created process with command line '"dotnet" .\Web.dll' but failed to listen on port XXXX"

.net core 日志文件夹中没有任何用处,只是应用程序已启动并正在侦听。

在我安装的服务器上:

  • Microsoft .Net core 1.1.1 -Runtime (x64)
  • Microsoft .Net core 1.1.2 -Runtime (x64)
  • Microsoft .Net 核心 1.0.5 和 1.1.2 - Windows 服务器托管
  • Microsoft Http 平台处理程序 1.2

我正在使用 Web Deploy 来部署它。我检查了目录结构。我已禁用启动错误页面。它在自己的应用程序池中运行,可以访问文件系统。 CLR 版本更改为无托管代码。加载用户配置文件设置为 True。

我的程序类如下:

var host = new WebHostBuilder()
    .UseKestrel()
    .UseContentRoot(Directory.GetCurrentDirectory())
#if !DEBUG
    // Disable windows auth for local debug
    .UseWebListener(options =>
        {
        options.ListenerSettings.Authentication.Schemes = AuthenticationSchemes.NTLM;
        options.ListenerSettings.Authentication.AllowAnonymous = false;
        })
#endif
    .UseIISIntegration()
    .UseStartup<Startup>()
    .UseApplicationInsights()
    .Build();

编辑:在部署目录中执行 dotnet MyApp.dll 告诉我它正在侦听端口 5000。我可以在本地访问它,并且该站点现在运行良好,因此它似乎是 IIS 集成。

如何获取调试信息以找出问题所在?或者更好的是,有什么问题?

更新:当 Kestrel 尝试将 IIS 用作反向代理时,可能会被防病毒系统阻止。我还无法验证这一点。

【问题讨论】:

    标签: asp.net-core


    【解决方案1】:

    您可能会认为您的 ASP.NET Core 应用程序配置为侦听另一个已在侦听的端口。例如,您可以使用https://technet.microsoft.com/en-us/sysinternals/tcpview.aspx 进行检查吗?

    【讨论】:

    • 每次我访问该网站时,它都会说它正在事件查看器中侦听不同的端口。你是这个意思吗?还是你的意思是 IIS 端口?
    • 我尝试将 IIS 设置为 2 个不同的端口,但仍然出现相同的错误消息
    • 所以,您的端口更改是有意义的(我尝试过),因为 IIS 就像一个反向代理,侦听端口 X,然后实例化您的 .NET CORE 应用程序,告诉它它在哪个端口上应该听(我相信它是 cmd 行的参数)。我的建议是尝试使用 dotnet 运行从它的文件夹启动您的应用程序,看看在这种情况下它是否可以监听端口,暂时从等式中删除 IIS。
    • dotnet Web.dll 可以正常工作,我可以在监听端口上点击它:) 下一步是什么?
    • 在这方面,我帮不上什么忙,因为我正在编译完整的框架,所以我直接得到一个 .exe,但我很确定你应该能够运行你的 .NET单独的核心应用程序,这应该为您提供宝贵的信息。您在部署它的文件夹中尝试过吗?它应该根据docs.microsoft.com/en-us/dotnet/core/tools/dotnet-run 工作
    【解决方案2】:

    缺少 .NET Framework 版本

    浏览器:502.3 网关错误 - 尝试路由请求时出现连接错误。 应用程序日志:错误代码 = 物理根目录为“C:{PATH}\”的应用程序“MACHINE/WEBROOT/APPHOST/MY_APPLICATION”无法使用命令行“dotnet”.\my_application.dll' 启动进程,错误代码 = '0x80004005 : 80008081。

    ASP.NET Core 模块日志:缺少方法、文件或程序集异常。异常中指定的方法、文件或程序集是 .NET Framework 方法、文件或程序集。

    疑难解答: 安装系统中缺少的 .NET Framework 版本。 对于依赖于框架的部署,请确认您在系统上安装了正确的运行时。例如,如果您将项目从 1.0 升级到 1.1,部署到托管系统并收到此异常,请确保在托管系统上安装 1.1 框架。

    查看this link了解更多信息

    用于调试 asp.net core 中的 IIS 和其他服务器错误

    打开 web.config 更改stdoutLogEnabled="true"

    在发布目录中创建一个日志文件夹

    【讨论】:

    • 我错过了什么,你可以在上面看到我安装了什么以及我正在使用什么?
    • 转到 IIS 服务器检查模块。如果 AspNetCoreModule 存在
    • 是的,AspNetCoreModule 存在
    最近更新 更多