2

このブログ投稿をフォローしようとしています: http://blogs.msdn.com/b/carlosfigueira/archive/2011/04/19/wcf-extensibility-message-inspectors.aspx

私の目的は、着信リクエストのリモートアドレスを何らかの方法で取得することですが、何らかの理由で、アドレスがどのパラメーターにも表示されないか、null になっています。

私が実装しているインターフェースは次のとおりです。

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

リモートアドレスを取得しようとしている方法はAfterReceiveRequest. パラメータrequestとの両方をチェックしましchannelた。また、あるchannel.RemoteAddressべき場所にあるようですが、そのプロパティは何らかの理由でnullです。パラメーターも null ですが、requestPOST ではなく GET を実行しているためだと思います。

以下は、これをテストするために呼び出すメソッドのシグネチャです。

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

3 に答える 3

5

使用するOperationContext.Current.IncomingMessageHeaders.From

また

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

また

HttpContext.Current.Request.UserHostAddress(これは設定が必要ですので注意してください<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

于 2011-11-12T01:03:35.070 に答える
0

情報はリクエストヘッダーにあり、次を使用して見つかります。

WebHeaderCollection headers = WebOperationContext.Current.IncomingRequest.Headers;
于 2011-11-12T01:21:10.960 に答える