C# 401 WinForms的信号器中出现未经授权的错误或未返回消息

C# 401 WinForms的信号器中出现未经授权的错误或未返回消息,c#,asp.net-mvc,winforms,signalr,C#,Asp.net Mvc,Winforms,Signalr,我试图在MVC服务器端和WinForms客户端之间创建简单的信号器集线器 我创建了NotificationHub类,具体如下: using System.Threading.Tasks; using Microsoft.AspNet.SignalR; namespace PF.Timesheet.Service { public class NotificationHub : Hub { public void Send(string name, string

我试图在MVC服务器端和WinForms客户端之间创建简单的信号器集线器

我创建了NotificationHub类,具体如下:

using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;

namespace PF.Timesheet.Service
{
    public class NotificationHub : Hub
    {
        public void Send(string name, string message)
        {
            Clients.All.broadcastMessage(name, message);
        }

        public override Task OnConnected()
        {

            return base.OnConnected();
        }
    }
}
客户端的代码如下所示:

var hubConnection = new HubConnection("http://localhost:30341/singalr");
var chat = hubConnection.CreateHubProxy("NotificationHub");

string message2 = string.Empty;

chat.On<string, string>("broadcastMessage", (name, message) => { message2 = message; });

chat.On<string, string>("broadcastMessage", (name, message) =>
        this.Invoke((Action)(() =>
           RichTextBoxConsole.AppendText(String.Format("{0}: {1}" + Environment.NewLine, name, message)));

hubConnection.Start().Wait();
我将从signer自托管的localhost获得401个未经授权的响应。(本地主机作为与客户端WinForms应用程序相同的项目中的不同解决方案并行运行)

我在服务器端尝试做的是将消息从如下代码推送到集线器:

hubConnection.Start().Wait();
  var context = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();
  context.Clients.All.broadcastMessage("NAM", "New entry created.");
  • 正在尝试将服务器项目的
    WindowsAuth
    AnonymousAuth
    属性设置为
    已启用
  • 使用以下命令时,检查消息是否实际推送到集线器:

    context.Clients.All.broadcastMessage(“NAM”,“创建了新条目”)

  • 信息就在那里


    是否有人通过了未经授权的问题,并且能够将消息从MVC Server SignalR hub读取到WinForms客户端?

    我自己设法解决了这个问题。问题是服务器(以前已经安装过,不是我安装的)具有用户名和密码的基本身份验证。 这在任何[Authorization]属性或任何东西中都不可见,但它仍然存在

    我通过在hubConfiguration上设置Credentials属性解决了此问题:

    hubConnection.Credentials = new NetworkCredential("user.name", "password");
    

    身份验证和到集线器的连接成功,消息从服务器返回到客户端。

    可能与此无关,但集线器中似乎有输入错误uri@LennartStoop谢谢你的回答。你指的是哪一个打字错误?也许我遗漏了一些愚蠢的东西。我指的是客户端的uri:它不应该是
    signalr
    而不是
    singalr
    ?@LennartStoop修复了这个问题,但问题仍然存在(如果在没有
    .Wait()
    的情况下运行,则不会出现异常的原因是
    hubConnection.Start()
    返回一个
    任务,该任务需要
    等待
    .Wait()
    编辑,否则它将永远不会运行。因此,当您忽略它时,它不会尝试连接(并且您也不会收到广播消息)。
    hubConnection.Credentials = new NetworkCredential("user.name", "password");