gpt4 book ai didi

c# - IIS 后台线程和 SignalR

转载 作者:行者123 更新时间:2023-11-30 17:13:14 26 4
gpt4 key购买 nike

我需要一个后台线程来完成一些工作并通过 SignalR 将数据发送给连接到该服务的用户。

我想在 IIS 中托管此线程,并在第一次点击 Application_Start 时或在单独的工作进程中生成它。

如果我在 IIS 中托管它并在应用程序开始时创建它- 线程仅在首次点击应用程序时启动。我需要它在我启动服务后立即运行。- 我无法通过桌面 GUI 控制此线程,我无法以简单的方式停止或暂停它。

如果我将其托管在单独的进程中,例如 Windows 服务- 我无权访问 SignalR 服务实例- 我不想作为用户连接到 SignalR 服务来向其他用户发送数据。我想要一种不同的方法,这种方法并不意味着工作人员是 SignalR 本身的客户端。

您对此有何看法?你看到任何其他解决方案吗?

最佳答案

我们解决这个问题的方法是在您的 Windows 服务可以调用的 Web 应用程序上创建一个单独的端点。

假设以下 URI 存在于 ASP.NET MVC Controller 中:http://[myserver]/api/TellUsers/[msg]。在此方法内部,您可以获得连接的集线器客户端并进行调用。

[HttpPut]
public void TellUsers(string msg)
{
var connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
var demoClients = connectionManager.GetClients<MyHubDerivedClass>();
demoClients.TellUsers(msg);
}

[在此处插入有关正确错误检查的警告。]

当然,您不必使用 MVC。任何可公开访问的 URI 都可以。至于保护它,您可以使用任何有效的技术来保护 ASP.NET 端点。

关于c# - IIS 后台线程和 SignalR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9942591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com