Я отлаживаю приложение ASP.NET, которое, по-видимому, случайно теряет содержимое некоторых статических полей.Я сделал несколько простых пользовательских журналов (потому что даже log4net был нестабильным) и обнаружил, что приложение загружается в два домена приложения.Вот фрагмент из журнала:
6/27/2011 9:01:01 PM /LM/W3SVC/1/ROOT/MyApp-1-129537072581658334: log message 1
6/27/2011 9:01:01 PM /LM/W3SVC/1/ROOT/MyApp-1-129537072581658334: log message 2
6/27/2011 9:01:01 PM /LM/W3SVC/1/ROOT/MyApp-1-129537072581658334: log message 3
6/27/2011 9:01:01 PM /LM/W3SVC/1/ROOT/MyApp-1-129537072581658334: log message 4
6/27/2011 9:01:02 PM /LM/W3SVC/1/ROOT/MyApp-4-129537072620628334: log message 5 <-
6/27/2011 9:01:02 PM /LM/W3SVC/1/ROOT/MyApp-4-129537072620628334: log message 6
6/27/2011 9:04:50 PM /LM/W3SVC/1/ROOT/MyApp-1-129537074647228334: log message 7
6/27/2011 9:04:50 PM /LM/W3SVC/1/ROOT/MyApp-1-129537074647228334: log message 8
Элемент после времени / даты является текущим доменным именем приложения.
Приложение представляет собой обычный ASP.NET (не MVC)приложение обрабатывает некоторые запросы AJAX и передает их в несколько библиотек ASP.NET.Единственное необычное, что одна из библиотек немного размышляет о поиске некоторых классов, которые затем создают их и запускают в отдельных потоках.Но он ничего не делает явно с доменами приложения.
Кстати, выделенная строка из файла журнала происходит из самого приложения ASP.NET (т.е. не из одного из этих отдельных потоков) из обработчика ASPX.
Правильно ли я интерпретирую журнал?Если это так, что может привести к загрузке и обслуживанию приложения из нескольких доменов приложений?
Редактировать: Этот вопрос в основном связан с этим вопросом: Состояние приложения ASP.NET противСтатический объект .Однако, исходя из того, что я видел сегодня, кажется невозможным полагаться на статические поля.Я мог бы переместить все в объект Application, но я думаю, что синхронизация была бы немного громоздкой.Я все больше и больше убежден, что приложение делает что-то нестандартное.
Редактировать 2: Я провел немного больше исследований, и кажется, что всегда есть отношение 1-1между приложениями и доменами приложений (что я и ожидал).Поэтому я думаю, что то, что я вижу, это переработка.
Редактировать 3: После еще нескольких экспериментов и осмотра я включил мониторинг работоспособности IIS (на основе http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx), иобнаружил, что приложение запускается дважды в быстрой последовательности. Это на самом деле довольно загадочно. Вот события журнала:
Event code: 1003
Event message: Application compilation is starting.
Event time: 6/28/2011 8:34:31 AM
Event time (UTC): 6/28/2011 3:34:31 PM
Event ID: d42336b18c264516a4ba5aa1e62df276
Event sequence: 1
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT/MyApp-1-129537488697736549
Trust level: Full
Application Virtual Path: /MyApp
Application Path: [snip]\MyApp\
Machine name: US-SEA-R9759B2
Process information:
Process ID: 7624
Process name: w3wp.exe
Account name: IIS APPPOOL\DefaultAppPool
----
Event code: 1001
Event message: Application is starting.
Event time: 6/28/2011 8:34:33 AM
Event time (UTC): 6/28/2011 3:34:33 PM
Event ID: f7fbecb1ba1a4a24833016cec47458c6
Event sequence: 1
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT-2-129537488729428362
Trust level: Full
Application Virtual Path: /
Application Path: [snip]\RootApp\
Machine name: US-SEA-R9759B2
Process information:
Process ID: 7624
Process name: w3wp.exe
Account name: IIS APPPOOL\DefaultAppPool
----
Event code: 1001
Event message: Application is starting.
Event time: 6/28/2011 8:34:40 AM
Event time (UTC): 6/28/2011 3:34:40 PM
Event ID: 07a3dc31e8804caca1ddc3b2101962e3
Event sequence: 1
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT-3-129537488807712839
Trust level: Full
Application Virtual Path: /
Application Path: [snip]\RootApp\
Machine name: US-SEA-R9759B2
Process information:
Process ID: 7624
Process name: w3wp.exe
Account name: IIS APPPOOL\DefaultAppPool
----
Event code: 1001
Event message: Application is starting.
Event time: 6/28/2011 8:34:40 AM
Event time (UTC): 6/28/2011 3:34:40 PM
Event ID: db304b519a084fa797fbcfe66fbb0b48
Event sequence: 1
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/1/ROOT/MyApp-4-129537488808502885
Trust level: Full
Application Virtual Path: /MyApp
Application Path: [snip]\MyApp\
Machine name: US-SEA-R9759B2
Process information:
Process ID: 7624
Process name: w3wp.exe
Account name: IIS APPPOOL\DefaultAppPool
Приложение MyApp находится в другом приложении (RootApp).быть двумя сообщениями журнала: запуск MyApp и запуск RootApp.