【问题标题】:How do i config the WCF Service Running URL as SignalR url?如何将 WCF 服务运行 URL 配置为 SignalR url?
【发布时间】:2017-04-08 07:36:01
【问题描述】:

我正在开发一个实时应用程序。我创建了一个 ASP.NET MVC 客户端应用程序和 WCF 服务。我需要在 WCF 和客户端中添加 signalR 概念以进行实时通知。

为此,我创建了一个自托管 signalR 并将此解决方案添加到 Visual Studio 中的 WCF 服务解决方案中。

我的 WCF 服务运行 URL 地址是:http://localhost:63694/Service1.svc

我的要求是 WCF 和 SignalR 一起工作。客户端是 ASp.Net MVC4

The WCF and ASP.NET MVC codes are here

信号R代码:-

      namespace SelfHostingSignalR
        {
           class Program
          {

                 static void Main(string[] args)
                 {
                 try
                  {
                      string url = "http://localhost:63694/Signalr";

                      using (WebApp.Start(url))
                  {
                     Console.WriteLine("Server running on {0}", url);
                     Console.ReadLine();
                  }
             }
              catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                   Console.ReadLine();
               }
            }
          }

          class Startup
          {
            public void Configuration(IAppBuilder app)
            {
               app.UseCors(CorsOptions.AllowAll);
               app.MapSignalR();

            }
         }
         public class MyHub : Hub
         {
           public void Send(string user)
           {
              Clients.All.addMessage(user);

            }
           }
      }

对于信号器 url,我使用 wcf url 地址硬编码了一些值:

字符串 url = "http://localhost:63694/Signalr";

我不知道它是否正确。有人可以为我提供解决方案吗?

如何将 WCF 服务运行 Url 配置为 signalR url?

【问题讨论】:

    标签: c# wcf asp.net-mvc-4 url signalr


    【解决方案1】:

    要在 WCF Web 服务应用程序上自托管 SignalR,您只需在 Startup.cs 中配置 /signalr

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

    MyHub 定义如下:

    public class MyHub : Hub
    {
        public void Send(string user)
        {
            Clients.All.addMessage(user);
        }
    }
    

    在您的客户端 MVC .NET 应用程序中,您可以调用服务器方法并定义客户端方法,如下所示:

        [HttpGet]
        public async Task<ActionResult> SignalR()
        {
            dynamic model = new ExpandoObject();
            using(var hubConnection = new HubConnection("http://localhost:63694"))
            {
                var myHub = hubConnection.CreateHubProxy("MyHub");
                myHub.On<string>("addMessage", (user) =>
                {
                    model.User = user;
                });
                await hubConnection.Start();
                await myHub.Invoke("Send", "an user");
            }
            return View(model);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      • 2010-11-14
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多