WCF пишет в логи IIS без блокировки запроса - PullRequest
0 голосов
/ 11 января 2019

У меня есть требование, где я хочу записать ответ метода WCF в журнал IIS на текущий запрос. В настоящее время это реализовано, но проблема в том, что мне нужно сериализовать объект ответа, прежде чем регистрировать его, так как метод AppendToLog принимает только строковый входной параметр, и эта сериализация занимает большую часть времени. Это добавляет значительную задержку к общему времени отклика.

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

Пожалуйста, дайте мне знать, как я могу решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Один из вариантов - делегировать LogWriting другому потоку в вашем приложении. Таким образом, вы можете поместить свой объект в очередь регистрации и продолжить вызов.

Поток, обрабатывающий запись журнала, может добавлять записи в журнал в своем собственном темпе.

0 голосов
/ 11 января 2019

Можете ли вы клонировать объект CurrentContext, а затем передать клонированную копию в асинхронный метод, на который вы ссылались? Или поместите нужные значения из объекта контекста в отдельные переменные, а затем напрямую передайте эти переменные в асинхронный метод.

Вам определенно захочется загрузить тест, который ... если сериализация занимает слишком много времени и слишком часто вызывается конечная точка, количество потоков может вырасти довольно высоко.

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