SignalR Client - 远程服务器返回错误(401 Unauthorized)

时间:2011-12-14 11:47:46

标签: asp.net-mvc asp.net-mvc-3 iis signalr

前提

我正在尝试将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服务器的客户端时,我应该考虑什么?有没有办法配置IIS以便客户端访问Network_Service用户?实际上是否有可能使Windows服务充当IIS中运行的Web服务器的客户端,就像我正在尝试的那样?

谢谢, 拉里

2 个答案:

答案 0 :(得分:2)

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

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

除此之外,我必须提供我的本地管理员用户名和密码才能连接。这不是我应该如何完成的,如果有人能够告诉我如何让网络用户从本地机器访问IIS,我将不胜感激。

但是,我认为在生产环境中创建一个单独的管理员帐户并使我的Windows服务在该帐户下运行是我愿意接受的解决方案。通过这种方式,它可以毫不费力地连接到本地IIS。

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

拉​​里

答案 1 :(得分:1)

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

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