1

WCF サービスで例外を発生させたとき。組み込みの WebErrorHandler 例外ハンドラー自体は、OperationContext.Current.IncomingMessageProperties にアクセスしようとして失敗します。これは、破棄されたように見えるためです。その結果、実際のエラーがマスクされ、常に HTML エラー出力が表示されます。

IncomingMessageProperties が破棄されるのはなぜですか? サービスはストリームを返します-それが関連しているかどうかはわかりません。

4

2 に答える 2

0

これは、OperationContract メソッドではなく、別のメソッドから OperationContext.Current.IncomingMessageProperties にアクセスしようとすると発生します。

OperationContext.Current.IncomingMessageProperties にアクセスするには、OperationContext への拡張メソッドを作成して、プロパティにアクセスします。

このようなもの:

public static string GetClientIP(this OperationContext context)
        {
            string ip = "";
            MessageProperties messageProperties = context.IncomingMessageProperties;
            RemoteEndpointMessageProperty endpointProperty =
              messageProperties[RemoteEndpointMessageProperty.Name] as RemoteEndpointMessageProperty;

            if (endpointProperty != null)
            {
                 ip = endpointProperty.Address;
            }

            return ip;
        }
于 2014-06-24T21:57:03.963 に答える
0

問題が見つかりました。WebFaultException を作成していました。ここで、通常の Exception を作成し、IErrorHandler を使用してそれをクライアントに正しくシリアル化します。

于 2012-08-20T14:00:21.247 に答える