首页 > 解决方案 > SignalR Invoke() 方法“未经授权”错误

问题描述

我已将 SignalR 添加到我们现有的 asp.net Web 应用程序中,一切正常。我已将此 Web 应用程序发布到 Azure,现在在调用方法上出现未经授权的错误。
我在 Azure 上启用了 Web 套接字和 ARR 关联。我没有使用 Authorize 属性。我是否需要向我的应用程序添加其他内容来验证 Web 应用程序或用户?

状态码:401,ReasonPhrase:'未授权',版本:1.1,内容:System.Net.Http.StreamContent,标头:{ 日期:Set-Cookie:ARRAffinity=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx;Path=/;HttpOnly;Domain=MyAppx.azurewebsites.net WWW-Authenticate: Bearer realm="MyAppx.azurewebsites.net" authorization_uri="https://login.windows.net/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/oauth2/authorize" resource_id="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" X-Powered-By: ASP.NET Content-Length :58 内容类型:文本/html }

标签: asp.net-mvcsignalrsignalr-hubsignalr.client

解决方案


因为在 asp.net 中对 SignalR 的支持有限,您必须使用一些 .net 核心库。您可以利用 var context = GlobalHost.ConnectionManager.GetHubContext() 而不是在集线器连接上使用 invoke() 方法会省去很多pluming代码。使用 GlobalHost.ConnectionManager.GetHubContext 也解决了授权问题。


推荐阅读