如果本地主机连接从浏览器关闭,HttpListener 将永远等待

HttpListener keep waiting forever if the localhost connection in closed from the browser

我正在尝试通过参考 Google OAuthDesktopApp 使用环回方法将 Google Auth 集成到本机桌面应用程序中。我 运行 遇到的问题是,如果用户关闭了浏览器中的选项卡,httplistner 将永远等待。如果用户关闭了浏览器选项卡,是否有一种方法可以让监听器回拨?或任何其他帮助我克服这种僵局情况的方法。

您可以考虑使用 WebBrowser 组件创建一个新表单:https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.webbrowser?view=netframework-4.8

或者,如果您在 WPF 中执行操作:https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.webbrowser?view=netframework-4.8

采用这种方法时,我通常做的是创建一个新表单,其中包含一个停靠的 WebBrowser,这不仅允许我检测 window 是否关闭,我还可以捕获其中的重定向供应商不允许自定义重定向 URI 的实例。

这种方法的最大缺点是内置浏览器非常糟糕;但是,对于简单的 OAuth 流程来说,它通常就足够了。