我想将自己的IOperationInvoker添加到wcf客户端,但无法使其正常工作。
我有这个

class ClientProgram
{
    static void Main()
    {
        CreateClient().SomeMethod();
    }

    private static MyServiceClient CreateClient()
    {
        var client = new MyServiceClient(new NetTcpBinding(), new EndpointAddress"net.tcp://localhost:12345/MyService"));
        // I guess this is where the magic should happen
        return client;
    }
}

public class MyOperationInvoker : IOperationInvoker
{
    private readonly IOperationInvoker _innerOperationInvoker;

    public MyOperationInvoker(IOperationInvoker innerOperationInvoker)
    {
        _innerOperationInvoker = innerOperationInvoker;
    }

    public object Invoke(object instance, object[] inputs, out object[] outputs)
    {
        Console.WriteLine("Intercepting...");
        return _innerOperationInvoker.Invoke(instance, inputs, out outputs);
    }

    // Other methods not important
}

最佳答案

您必须在这里混一些东西。

IOperationInvoker是仅服务器端的扩展点。它使您可以检查传入的消息,并基于该消息(该消息的内容,标头或其他内容)在服务上调用特定操作。

在客户端,这根本没有意义-客户端无法使用IOperationInvoker实现。

如果您想知道如何在服务器端添加IOperationInvoker实现,请检出this blog post以获取完整的调试信息。

有关WCF可扩展性的出色通用介绍,请查看Aaron Skonnards MSDN article here

关于c# - 如何将IOperationInvoker添加到WCF客户端,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1231672/

10-12 21:06