WCF определить, когда сообщение появляется впервые? - PullRequest
0 голосов
/ 01 мая 2011

У меня есть собственная служба WCF 4.0 с конечной точкой HTTPS. У меня есть метод, который записывает некоторую информацию о трассировке после поступления сообщения. Однако некоторые сообщения имеют размер 400 КБ, поэтому, возможно, существует долгое ожидание между тем, когда он есть у WCF и у моего консольного приложения. Как я могу получить слой перехвата или перехвата, чтобы я мог по крайней мере знать, когда сообщение впервые приходит?

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

Спасибо за все идеи!

Это не то же самое, что Обнаружение операции открытого канала клиента WCF , речь идет о том, чтобы знать, когда HTTP-трафик поступает впервые. Может, дело не в том, что мне нужно отслеживать вещи в моей службе WCF, может быть, я нужно отслеживать какой-то другой уровень WCF, который перехватывает HTTP. Кто-нибудь может сказать?

Ответы [ 2 ]

0 голосов
/ 09 мая 2011

Один из вариантов - реализовать интерфейс IDispatchMessageInspector для вашей службы с помощью кода проверки размера сообщения в переопределении метода AfterReceiveRequest. Ваш код должен выглядеть примерно так, как в этом сообщении в блоге.

0 голосов
/ 09 мая 2011

Как насчет создания пользовательского MessageEncoder, который просто оборачивает реализацию по умолчанию, но переопределяет ReadMessage() и регистрирует некоторую информацию до вызова обернутой реализации (которая создает экземпляр Message)?На этом этапе полное сообщение даже не полностью передается по проводам, следовательно, это очень ранняя точка конвейера обработки.Очевидно, однако, вы еще ничего не знаете о сообщении.Но если вы хотите получить метку времени, это может быть удобным местом для ее получения.

...