gpt4 book ai didi

c# - 使用 IDispatchMessageInspector 获取请求的远程地址

转载 作者:行者123 更新时间:2023-12-02 03:57:27 24 4
gpt4 key购买 nike

我正在尝试关注这篇博文:http://blogs.msdn.com/b/carlosfigueira/archive/2011/04/19/wcf-extensibility-message-inspectors.aspx

我的目标是以某种方式获取传入请求的远程地址,但由于某种原因,该地址要么在任何参数中都看不到,要么为空。

这是我正在实现的界面:

public interface IDispatchMessageInspector
{
object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext);
void BeforeSendReply(ref Message reply, object correlationState);
}

我尝试获取远程地址的方法是 AfterReceiveRequest。我检查了参数 requestchannel。另外,channel.RemoteAddress 似乎是它应该在的位置,但由于某种原因该属性为 null。 request 参数也为 null,但我猜这是因为我正在执行 GET 而不是 POST。

下面是我调用来测试这一点的方法的签名。

[OperationContract, WebGet( UriTemplate = "{*path}", ResponseFormat = WebMessageFormat.Json)]
string[] GetList(string path);

最佳答案

使用 OperationContext.Current.IncomingMessageHeaders.From

或者

(OperationContext.Current. IncomingMessageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty).Address

或者

HttpContext.Current.Request.UserHostAddress (注意这个需要设置 <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> )

关于c# - 使用 IDispatchMessageInspector 获取请求的远程地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8101623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com