Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 信号机连接但不连接';不要推送信息_C#_Asp.net_.net_Wcf_Signalr - Fatal编程技术网

C# 信号机连接但不连接';不要推送信息

C# 信号机连接但不连接';不要推送信息,c#,asp.net,.net,wcf,signalr,C#,Asp.net,.net,Wcf,Signalr,我一直在致力于将signalr作为wcf服务的一部分来实现,以便与.net客户端通信。除了连接消息之外,所有通信都是向客户端传递动态负载的单向通信 我已经设法将其设置为客户端将连接到服务并传递连接消息,但我无法将消息从服务推送到客户端 抱歉,如果我错过了其他地方的答案,但我无法找到失败的原因,因为它似乎遵循了“操作方法” 任何帮助都将不胜感激,并提前向您表示感谢 服务器端: WCF外部呼叫 public class MessageService : IMessageService {

我一直在致力于将signalr作为wcf服务的一部分来实现,以便与.net客户端通信。除了连接消息之外,所有通信都是向客户端传递动态负载的单向通信

我已经设法将其设置为客户端将连接到服务并传递连接消息,但我无法将消息从服务推送到客户端

抱歉,如果我错过了其他地方的答案,但我无法找到失败的原因,因为它似乎遵循了“操作方法”

任何帮助都将不胜感激,并提前向您表示感谢

服务器端:

WCF外部呼叫

public class MessageService : IMessageService
{

    public string PushAlerts()
    {
         var payLoad = new PayLoad
                      {
                          MethodName = "alerts"
                      };


            IHubContext connectionHub = GlobalHost.ConnectionManager.GetHubContext<PushConnection>();

            connectionHub.Clients.All.Notify(payLoad);
    }
}
客户端:

            var querystringData = new Dictionary<string, string>{};
            querystringData.Add("CONNECTION MESSAGE", "foo Connection");

            var hubConnection = new HubConnection("http://localhost:60479/", querystringData); //Running local till working

            hubConnection.TraceLevel = TraceLevels.All;
            hubConnection.TraceWriter = Console.Out;


            IHubProxy clientHubProxy = hubConnection.CreateHubProxy("PushHub");

            clientHubProxy.On("Notify", payLoad =>

                                                    SynchronizationContext.Current.Post(delegate
                                                                                        {
                                                                                            ResponseMethod(payLoad);
                                                                                        }, null)
                );
            await hubConnection.Start();
var querystringData=newdictionary{};
添加(“连接消息”、“foo连接”);
var hubConnection=新的hubConnection(“http://localhost:60479/“,查询字符串数据)//在本地运行直到工作
hubConnection.TraceLevel=TraceLevel.All;
hubConnection.TraceWriter=控制台.Out;
IHubProxy clientHubProxy=hubConnection.CreateHubProxy(“PushHub”);
clientHubProxy.On(“通知”,有效负载=>
SynchronizationContext.Current.Post(委托
{
响应方法(有效载荷);
},空)
);
等待连接。开始();
我漏掉了有效载荷,但它目前只保存一个字符串值。我还设置了一个用于记录perpose的管道模块


再次感谢

好的,我用两种方法解决了这个问题:首先,我将调用移动到中心内部的客户端,然后从我的wcf服务中的方法调用它

[HubName("PushHub")]
public class PushHub : Hub
{

    IHubContext connectionHub = GlobalHost.ConnectionManager.GetHubContext<PushConnection>();

public void Send(Payload payload)
{
        connectionHub.Clients.All.Notify(payLoad);

}
}

虽然做了很多修改,但希望我的回答能帮助他人。

我讨厌删除链接。。。但你可能会在我的回答中发现一些有用的东西。没有一个链接是很酷的,如果它解决了我的问题:)
[HubName("PushHub")]
public class PushHub : Hub
{

    IHubContext connectionHub = GlobalHost.ConnectionManager.GetHubContext<PushConnection>();

public void Send(Payload payload)
{
        connectionHub.Clients.All.Notify(payLoad);

}
}
clientHubProxy.On("Notify", (payLoad) => { dostuff };