【发布时间】:2018-11-14 17:48:38
【问题描述】:
我有一个使用 Kestrel 作为 http 服务器的自托管 mvc 项目。 在从 Windows Server 2016 到 Windows 10 的某些机器上,由于某种原因,尝试通过 http 访问应用程序时没有收到响应。 浏览器只是挂在等待服务器地址。 正如我所说,这仅发生在 1% 的安装中,但我需要弄清楚。 我试图将我的配置尽可能地减少,但仍然没有来自服务器的响应,控制台记录器也没有显示任何记录,好像什么也没发生,因此在启动或发出请求时没有错误或任何错误指示。
这是我的 WebHostBuilder 代码
var hostBuilder = new WebHostBuilder()
.UseStartup<WebStartup>()
.UseKestrel(kestrelOptions =>
{
//listen on configured web port
kestrelOptions.ListenAnyIP(WEB_PORT, options=>
{
});
if (HTTPS_ENABLE)
{
kestrelOptions.Listen(IPAddress.Any, HTTPS_PORT, listenOpt =>
{
if (string.IsNullOrWhiteSpace(HTTPS_PFX_FILE) || !File.Exists(HTTPS_PFX_FILE))
{
TraceInitMessage($"PFX file not found.");
}
else if (string.IsNullOrWhiteSpace(HTTPS_PFX_PASSWORD))
{
TraceInitMessage($"PFX file password is invalid.");
}
else
{
listenOpt.UseHttps(HTTPS_PFX_FILE, HTTPS_PFX_PASSWORD, httpsOptions =>
{
httpsOptions.SslProtocols = System.Security.Authentication.SslProtocols.Default;
});
}
});
}
});
如果我检查进程,我可以看到有一个监听连接,一旦浏览器连接,就会建立一个连接,如果浏览器窗口关闭连接进入关闭等待状态。
那么我有什么办法可以确定问题在整个管道中的哪个位置开始?
【问题讨论】:
-
您使用的是哪个浏览器?查找您提供的错误消息会显示此 SO 线程和一堆 SNTP 链接。
-
所有浏览器的行为都是相同的。使用 Postman 调用 WEB Api 端点的行为完全相同。我不是专家,但在浏览器方面似乎请求永远不会超时,希望这些信息也有用。
-
所有浏览器都返回完全相同的错误信息?这似乎令人怀疑。您是否从红隼或 IIS 控制台或日志中看到该错误消息?
-
没有错误消息只是“等待主机”我可以清楚地看到服务器上接受了连接但没有任何反应,控制台日志记录也显示零信息,因为没有任何反应。
-
是的,错误消息的准确措辞对于接收有关 SO 的相关响应至关重要。
标签: c# asp.net-core-mvc kestrel-http-server