4

前提

我正在尝试使 Windows 服务充当 Web 服务器(在 IIS Express 上运行的 MVC3 项目)的 signalR 客户端。尝试连接服务器时,返回 401 Unauthorized。

现在,据我了解,Windows 服务在帐户 NETWORK_SERVICE 下运行,这不是连接到 IIS 的有效用户名是有道理的。但是,我尝试通过以下方式配置 SignalR:

在里面

private static Connection WebUIConnection = new Connection("http://localhost:54193/IISWebsite");

设置凭据

WebUIConnection.Credentials = new System.Net.NetworkCredential("?", "?")

IIS 的设置: IIS 几乎是一个标准的 MVC3 项目,它启用了 windows 身份验证。

我试过的

我尝试将 SignalR 的凭据设置为我的本地 Windows 用户名 + pw,还尝试使用本地网络 AD uname + pw,但我不认为这是这样做的方法。

所以我要问的是,当我尝试让我的 Windows 服务充当 signalR-server 的客户端时,我应该考虑什么,有没有办法配置 IIS 以让客户端访问 Network_Service 用户?实际上是否有可能像我试图做的那样让 Windows 服务充当在 IIS 中运行的 Web 服务器的客户端?

谢谢,拉里

4

2 回答 2

2

我能够解决似乎是问题。使用 SignalR.Client,您需要在连接字符串中提供的 URL 如下所示:

private static Connection WebUIConnection = new Connection("http://localhost:54193/IISWebsite/signalr/hubs");

除此之外,我必须向它提供我的本地管理员用户名和密码才能连接。这不是我应该做的事情,如果有人能告诉我如何让网络用户可以从本地计算机访问 IIS,我将不胜感激。

但是,我认为在生产环境中创建一个单独的管理员帐户并让我的 windows 服务在该帐户下运行是我愿意接受的解决方案。这样,它将能够顺利连接到本地 IIS。

希望这些信息对其他人有帮助:)

拉里

于 2011-12-15T06:54:25.920 回答
1

如果您使用的是集线器,则该代码不正确。您应该使用 HubConnection。更多信息在这里:

https://github.com/SignalR/SignalR/wiki/SignalR-Client-Hubs

于 2011-12-15T12:40:21.273 回答