Значение агента пользователя в IIS и мой файл журнала отличается

Я хочу записать информацию о пользовательских агентах в мой файл журнала. Поэтому я использовал этот код:

System.Web.HttpContext.Current.Request.UserAgent;

Это работает нормально, когда я использую браузер для использования моего веб-сервиса (пользовательский агент возвращает правильное значение), но иногда приведенный выше код не работает. например, когда я использую тестовый клиентский клиент WCF, в моем файле журнала строка null, но в файле журнала IIS есть это значение: Mozilla/4.0+(compatible;+MSIE+6.0;+MS+Web+Services+Client+Protocol+4.0.30319.34003)

я также попробовал эти коды:

    OperationContext context = OperationContext.Current;
HttpRequestMessageProperty httpRequest =
      context.IncomingMessageProperties["httpRequest"] as HttpRequestMessageProperty;
if (httpRequest != null)
{    
  string userAgentInfo = httpRequest.Headers["User-Agent"];
}  

а также

string userAgent = WebOperationContext.Current.IncomingRequest.Headers["User-Agent"];

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

1 ответ

Решение

Это огромный беспорядок, а не то, что можно легко расшифровать.

Из-за некоторых сценариев в первые дни Интернета, которые использовали для прослушивания версии браузера и отклонения сайтов, которые не были совместимы, многие браузеры начали сообщать о сумасшедших вещах, просто чтобы обойти это. NETscape утверждал, что он IE, и я думаю, что IE утверждал, что он Netscape, и это все беспорядок. Кроме того, в эту строку можно отправлять все, что вы хотите, поэтому не гарантируется, что она будет правильной, даже если строка имеет смысл.

Другие вопросы по тегам