我正在尝试将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服务器的客户端,就像我正在尝试的那样?
谢谢, 拉里
答案 0 :(得分:2)
我能够解决看似问题的问题。使用SignalR.Client,您需要在连接字符串中提供的URL如下所示:
private static Connection WebUIConnection = new Connection("http://localhost:54193/IISWebsite/signalr/hubs");
除此之外,我必须提供我的本地管理员用户名和密码才能连接。这不是我应该如何完成的,如果有人能够告诉我如何让网络用户从本地机器访问IIS,我将不胜感激。
但是,我认为在生产环境中创建一个单独的管理员帐户并使我的Windows服务在该帐户下运行是我愿意接受的解决方案。通过这种方式,它可以毫不费力地连接到本地IIS。
希望这些信息对其他人有所帮助:)
拉里
答案 1 :(得分:1)
如果您正在使用集线器,则该代码不正确。你应该使用HubConnection。更多信息: