【问题标题】:SingalR in console app控制台应用程序中的 SignalR
【发布时间】:2018-05-05 23:55:29
【问题描述】:

您好,我正在尝试在控制台应用程序中运行 signalR。 这是我到目前为止的代码

    class Program
{
    static IDisposable dis = null;

    static void Main(string[] args)
    {
        try
        {
            dis = WebApp.Start<Startup>("http://localhost:10476");
            Console.WriteLine("hi");
            Console.ReadKey();
        }
        catch(Exception ex)
        {
            Console.WriteLine(ex.Message);
        }

        if (dis != null)
            dis.Dispose();
    }
}

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.MapSignalR();
    }
}

public class myHub : Hub
{
    public void Hello()
    {
        Console.WriteLine("hi");
        Clients.All.OK();
    }
}

更新

这是我的客户代码

function send() {
var connection = $.hubConnection("http://localhost:10476");
var hub = connection.createHubProxy("myHub");
hub.on("OK", function () {
    alert("HI");
});
connection.start({jsonp: true})
    .done(function () {
        console.log('connected');
        hub.invoke("Hello");
    })
    .fail(function (a) {
        console.log('not connected' + a);
    });

}

注意:我的客户端和集线器是分开的(我希望客户端是浏览器扩展,而服务器是我计算机上的应用程序) 但是,当我调用此函数时,浏览器坐在“请求的资源上不存在'Access-Control-Allow-Origin'标头。因此,不允许访问Origin'http://localhost:63343'。” 我的客户代码正确吗?

【问题讨论】:

  • 您是否以管理员身份运行它?如果没有管理员权限,应用程序可能无法打开端口 476。或者它可以被另一个应用程序使用。为了安全起见,您应该始终使用 10000 以上的端口
  • 请不要那样做。在解决问题后更改问题在 Stack Overflow 上被认为是非常糟糕的行为。您应该回滚这些编辑并提出一个新问题
  • 没有完全解决,只是问题的一部分。但我会记住这一点

标签: c# web-applications signalr


【解决方案1】:

如果您未启用 CORS,则您的 SignalR 服务器和负责加载页面的 Web 服务器应该相同。如果您希望它们位于单独的 Web 应用程序中,则必须在 SignalR 应用程序中启用 cors。在 Startup.cs 中执行此操作:

 public void Configuration(IAppBuilder app)
 {
    app.Map("/signalr", map =>
    {
      map.UseCors(CorsOptions.AllowAll);
      var hubConfiguration = new HubConfiguration { };
      map.RunSignalR(hubConfiguration);
    });
  }

更多信息请查看以下链接:
https://cmatskas.com/signalr-cross-domain-with-cors/

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 1970-01-01
    • 2013-05-07
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    相关资源
    最近更新 更多