Назад | Перейти на главную страницу

переключение правил перезаписи URL в IIS7 приводит к сбою среды CLR

Сценарий: многие пользователи (от 10 до 100) просматривают сайт, и во время просмотра правила перезаписи / перенаправления URL-адресов переключаются. Приложение вылетает в случайное время, и в таблице журнала исключений регистрируется следующее сообщение (мы используем платформу исключений Enterprise Library):

Common Language Runtime detected an invalid program

Подробности:

An exception of type 'System.InvalidProgramException' occurred and was caught.  ------------------------------------------------------------------------------  07/12/2011 12:02:20  Type : System.InvalidProgramException, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089  Message : Common Language Runtime detected an invalid program.  Source : App_Web_wvjyf0pr  Help link :   Data : System.Collections.ListDictionaryInternal  TargetSite : System.Web.UI.WebControls.Panel __BuildControlpnlSearchResult()  Stack Trace :    at ASP.my_underscore_seperated_page_name_aspx.function() at ...

Сервер: Windows 2008R2

.Net: 3.5

Веб-сервер: IIS7

Как ни странно, при включении трассировки неудачных запросов в IIS для захвата кодов состояния 400-506 запросы / ответы не фиксировались.

Я понимаю, что каждый раз при переключении правила изменяется Web.config. Может ли слишком частое изменение Web.config быть причиной?

Правила в Web.Config выглядят следующим образом:

<rule name="Redirect Rule For Page Name" enabled="false" stopProcessing="true">
  <match url="PageName" />
  <conditions>
    <add input="SiteFolder/SubFolder/PageName.aspx" pattern="^(SiteFolder/)([^.])+(PageName.aspx)$" />
  </conditions>
  <action type="Redirect" url="http://www.MySite/SiteFolder/NewPage.aspx" appendQueryString="false" />
</rule>

Любая помощь приветствуется.

Совершенно уверен, что каждый раз, когда вы касаетесь файла web.config, домен приложения для него перезапускается.

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

Кий Скотт:

http://weblogs.asp.net/owscott/archive/2006/02/21/ASP.NET-v2.0-_2D00_-AppDomain-recycles_2C00_-more-common-than-before.aspx