【发布时间】:2021-03-17 21:31:32
【问题描述】:
在创建 .NET Core Web 应用 C# 和调试时,您可以选择在运行应用时启动浏览器。控制台启动,然后 url 在您首选的浏览器中启动。关闭调试会话打开的浏览器选项卡后,应用进程将停止并且不再在计算机上运行。
当我发布应用程序时,页面不会自动启动,因此我正在启动一个新流程来执行此操作。我在启动它之前向进程添加了一个事件处理程序,但是由于应用程序没有启动该进程,因此在关闭选项卡时它不会收到任何通知。
启动 .NET Core Web 应用和/或处理两者之间的通信的正确方法是什么?
我什至尝试添加一个关闭按钮,但 JS 不允许我关闭窗口,因为我还没有打开它。
我正在按如下方式创建我的流程:
var p = Process.Start("cmd", "/C start http://localhost:5000");
我试过了
p.WaitForExit();
p.EventHandler += newHandler;
我也尝试过使用 ProcessStartInfo,但现在唯一有效的是,如果我设置了一个计时器,然后在计时器激活时终止进程,但这似乎不太干净。
感谢任何建议!
【问题讨论】:
-
没有“正确”的方法,因为这甚至都不常见。您的 Web 应用在 Web 服务器上正常运行,所有客户端浏览器远程独立运行
-
感谢您的意见@KeithNicholas。我已经使用 NancyFX 完成了我的要求,您可以在其中自我托管,我希望我能够使用 Kestrel 使用 .net 核心自我托管并使其“像 NancyFX”一样工作,但我想不会。
标签: c# asp.net-core-3.1