我正在尝试设置负载测试,尽可能多地运行代码库。我在同一个过程中运行服务器和客户端:
class Program
{
class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR(new HubConfiguration
{
EnableDetailedErrors = true
});
}
}
public static void Main(string[] args)
{
var signalr = "http://localhost:21337/";
using (WebApp.Start<Startup>(signalr))
{
var connection = new HubConnection(signalr) {Credentials = CredentialCache.DefaultNetworkCredentials};
var catalog = connection.CreateHubProxy("CatalogHub");
connection.Start().Wait();
catalog.Invoke("SendChat", String.Empty, String.Empty, String.Empty);
Console.ReadLine();
}
}
}
然而,在connection.Start.Wait()
我收到401 Unauthorized错误。我不确定为什么因为IIS无处可去。
答案 0 :(得分:4)
PEBKAC。结果是集线器上设置了[Authorize]
,但我使用的是匿名身份验证。确保Ntlm身份验证解决了问题。
public class Startup
{
public void Configuration(IAppBuilder app)
{
var listener = (HttpListener)app.Properties[typeof(HttpListener).FullName];
listener.AuthenticationSchemes = AuthenticationSchemes.Ntlm;
app.MapSignalR(new HubConfiguration
{
EnableDetailedErrors = true,
EnableJSONP = true
});
}
}
答案 1 :(得分:0)
在我的集线器类上设置Authorize属性后,我发现在我的Web API项目的属性中禁用了Windows身份验证,我收到了同样的错误。 getting 401 error with signalr owin host 2.0.3指出了这一点。当我启用它时,这非常有效,我也能够在我的集线器中获取用户身份名称
需要注意的一点是,我没有像上面的帖子
中那样设置身份验证方案