IParameterInspector中的操作URL?

问题描述 投票:0回答:1

我正在客户端(WCF)和服务(WCF)上都实现IParameterInspector,问题是我没有找到一种方法来获取在客户端上发送消息的URL?在服务上,我可以使用:OperationContext.Current.RequestContext.RequestMessage.Headers.To.ToString(),但是在客户端上,OperationContext.Current为null。

有没有办法同时控制发送者和接收者的URL?

c# .net wcf url
1个回答
0
投票

关于OperationContext,它为空。可能的原因是,您直接创建服务类型的实例,然后在其上调用方法。解决方案如下:

    public class Client {
    public void run()
    {
        ServiceReference1.Service1Client service1Client = new Service1Client(new InstanceContext(this));
        using (OperationContextScope scope = new OperationContextScope(service1Client.InnerChannel)) {
            HttpRequestMessageProperty http = new HttpRequestMessageProperty();
            string apikey = "OAvHGAAatytiZno";
            http.Headers.Add("apikey", apikey);
            OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = http;
            ServiceReference1.Result result = service1Client.GetUserData("Test");
            Console.ReadLine();
        } 
    }
}
class Program

{
    static void Main(string[] args)
    {
        Client client = new Client();
        client.run();
    }
}

以下链接是我回答的类似问题。您可以参考它。

getting System.NullReferenceException: 'Object reference not set to an instance of an object.' when calling a service

但是这没有获得在客户端上发送消息的URL,客户端没有通过URI发送消息,而是通过IP发送消息。

© www.soinside.com 2019 - 2024. All rights reserved.