#c# #asp.net #.net #asp.net-mvc #asp.net-web-api
#c# #asp.net #.net #asp.net-mvc #asp.net-web-api
Вопрос:
Я подумал log Thread-ID
о том, чтобы отслеживать запрос и сделать файл журнала доступным для чтения.
Итак, мои первоначальные попытки были logging in Global.asax
такими:
protected void Application_BeginRequest()
{
log4net.ILog writer = log4net.LogManager.GetLogger(this.GetType());
writer.InfoFormat("Gotta service a request. Id = {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
}
protected void Application_EndRequest()
{
log4net.ILog writer = log4net.LogManager.GetLogger(this.GetType());
writer.InfoFormat("Completed servicing a request. Id = {0}", System.Threading.Thread.CurrentThread.ManagedThreadId);
}
Но когда я вижу лог-файл, это очень странно.
2014-06-16 20:27:06,018 - Gotta service a request. Id = 286 --> From Application_BeginRequest()
2014-06-16 20:27:06,042 - Servicing Request Thread-Id = 286 --> this message comes from controller
2014-06-16 20:27:06,043 - Thread-Id = 286 --> this message comes from controller
2014-06-16 20:27:06,237 - Completed servicing a request. Id = 287 --> From Application_EndRequest()
В Application_Start
, Thread-Id
286
но когда он возвращается к Application_EndRequest
, Thread-Id changed to 287
.
Разве не один поток обслуживает весь HTTP request
?
Есть идеи, почему?
Комментарии:
1. Вероятно, он использует асинхронные операции
2. @Jonesy: хорошо, тогда есть идеи, как отследить запрос?
Ответ №1:
Запрос обрабатывается однопоточно, но это не означает, что это один и тот же поток на протяжении всего запроса.
Запрос может «перескакивать» потоки, вам по-прежнему гарантируется, что выполнение происходит по порядку, но вы не гарантированно выполняете один и тот же поток повсюду.
Комментарии:
1. Спасибо. Но тогда,
How to track a request
?2. HttpContext. Items[«id»] = new whateveryourridis() 🙂
3. @Yisahi Galatzer: Итак, в основном мы передаем содержимое
unique id
в контейнере cookie? Правильно?4. нет, идея в том, что мы передаем его в пакете свойств, который перемещает потоки вместе с запросом