我正在客户端(WCF)和服务(WCF)上都实现IParameterInspector,问题是我没有找到一种方法来获取在客户端上发送消息的URL?在服务上,我可以使用:OperationContext.Current.RequestContext.RequestMessage.Headers.To.ToString()
,但是在客户端上,OperationContext.Current为null。
有没有办法同时控制发送者和接收者的URL?
关于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();
}
}
以下链接是我回答的类似问题。您可以参考它。
但是这没有获得在客户端上发送消息的URL,客户端没有通过URI发送消息,而是通过IP发送消息。