小编Sin*_*eep的帖子

检测WCF双工合同中的客户端死亡

我正在尝试构建一个SOA,客户端可以在服务器上执行长时间运行的查询,服务器使用回调进行响应.

我希望能够检测客户端是否断开连接(通过用户启动的关闭,未处理的异常或丢失网络连接),以便服务器可以选择取消昂贵的请求.

我正在测试各种故障情况,但我似乎无法启动某些事件处理程序.

经过测试的失败案例:在请求后杀死客户端进程.使用像CurrPorts这样的程序来关闭TCP连接.

测试代码:

using System;
using System.ServiceModel;
using System.Threading;

namespace WCFICommunicationObjectExperiments
{
    class Program
    {
        static void Main(string[] args)
        {
            var binding = new NetTcpBinding(SecurityMode.None);

            var serviceHost = new ServiceHost(typeof (Server));
            serviceHost.AddServiceEndpoint(typeof (IServer), binding, "net.tcp://localhost:5000/Server");
            serviceHost.Open();
            Console.WriteLine("Host is running, press <ENTER> to exit.");
            Console.ReadLine();
        }

    }

    [ServiceContract(CallbackContract = typeof(IClient))]
    public interface IServer
    {
        [OperationContract]
        void StartProcessing(string Query);
    }

    public interface IClient
    {
        [OperationContract]
        void RecieveResults(string Results);
    }

    [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
    public class Server : IServer
    {

        public void …
Run Code Online (Sandbox Code Playgroud)

c# wcf duplex callback nettcpbinding

31
推荐指数
2
解决办法
3万
查看次数

获取wcf服务的已连接客户端列表

如何枚举服务主机的所有连接客户端的某种位置标识符?我正在使用双工连接进行长时间运行计算.服务主机是单身人士.

我可以弄清楚(在.net 3.5中)调用客户端的IP,但我不确定如何获取所有连接客户端的IP.

c# ip wcf net.tcp .net-3.5

5
推荐指数
1
解决办法
3758
查看次数

标签 统计

c# ×2

wcf ×2

.net-3.5 ×1

callback ×1

duplex ×1

ip ×1

net.tcp ×1

nettcpbinding ×1