Инспектор клиента WCF получает имя веб-службы, которую он вызывает, или имя или тип вызывающего метода или что-то в этом роде. - PullRequest
1 голос
/ 04 марта 2011

В моем клиентском приложении реализован инспектор WCF, который использует множество веб-сервисов.

Я использую этот инспектор в качестве механизма ведения журнала для регистрации вызовов, отправленных из приложения этим веб-службам, и ответов, которые они возвращают.

public class WcfClientInterceptor : IClientMessageInspector
    {

        protected static readonly ILog log4net = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

        private static readonly IMessageLogger Logger = new Log4NetLogger();

        private MessageLogEntry LogEntry;// = new MessageLogEntry();

        public void AfterReceiveReply(ref Message reply, object correlationState)
        {   

            if (Logger.IsLogEnabled)
            {
                LogEntry.ResponseBody = reply.ToString();
                Logger.Log(LogEntry);
            }
        }

        public object BeforeSendRequest(ref Message request, IClientChannel channel)
        {
            if (Logger.IsLogEnabled)
            {
                LogEntry = LogEntry ?? new MessageLogEntry();
                //instanceContext.GetServiceInstance().GetType().Name
                //LogEntry.WebServiceIdentity = request.Headers.Action;
                LogEntry.WebServiceIdentity = OperationContext.Current.IncomingMessageHeaders.Action;
                LogEntry.RequestBody = request.ToString();
            }
            return null;
        }
    }

Моя проблема в том, что я не знаю, как называется веб-сервис. Я хочу получить какую-то ссылку на них и записать это.
Это единственный метод, который работает request.Headers.Action, но он не всегда работает. Большую часть времени это String.Empty. OperationContext.Current имеет значение null, которое, как я понимаю, является нормальным для клиентской стороны.

Есть ли другой способ получить название веб-службы, которая называется? или имя вызывающего метода? или что?

Спасибо

1 Ответ

1 голос
/ 16 апреля 2011

работает с LogEntry.WebServiceIdentity = request.Headers.Action;Я ошибся

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...