elmah на коробке IIS 6

У меня есть веб-сайт, на котором работает elmah, регистрируясь в поле sql. В моем тестовом окружении это машина IIS 7, и все работает хорошо. Когда я загружаю в сеть сетевых решений под управлением IIS 6, я получаю сообщение об ошибке

[SecurityException: Request for the permission of type 'System.Configuration.ConfigurationPermission, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' failed.]
   System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
   System.Security.CodeAccessPermission.Demand() +58
   System.Configuration.BaseConfigurationRecord.CheckPermissionAllowed(String configKey, Boolean requirePermission, Boolean isTrustedWithoutAptca) +99

Веб-сайт настроен для запуска .net 3.5. Все наши страницы работают нормально, но elmah выдает эту ошибку. Я поискал, но не могу найти то, что настроил неправильно. Надеялся, что кто-то уже решил это.


person jvcoach23    schedule 03.02.2011    source источник


Ответы (1)


Я подозреваю, что ваш хостер использует ASP.NET со средним доверием. Есть пара вещей, которые стоит попробовать.

Добавьте атрибут requirePermission="false" в каждый из разделов конфигурации Elmah, объявленных в вашем web.config, например:

<sectionGroup name="elmah">
  <section name="security" type="Elmah.SecuritySectionHandler, Elmah" 
           requirePermission="false"/>
  <section name="errorLog" type="Elmah.ErrorLogSectionHandler, Elmah" 
           requirePermission="false"/>
</sectionGroup>

Если это не сработает, вы также можете попробовать переопределить уровень доверия, добавив это в <system.web> в вашем web.config файле:

<trust level="Full"/>

Если это не сработает, вам может потребоваться связаться с вашим хостером и попросить его ослабить свою политику доверия. Однако, если ваш сайт находится в общем пуле, вряд ли они будут этим заниматься.

Обновление:

Об атрибуте requirePermission: Политика среднего доверия по умолчанию не разрешает частично доверенным вызывающим абонентам доступ к параметрам файла конфигурации даже в вашем собственном приложении.

Вы можете переопределить это для локальных параметров конфигурации вашего приложения, установив requirePermission="false". Это делается в объявлениях <section name="..." type="..." /> в вашем web.config файле. Итак, когда вы установите:

<section name="errorLog" type="Elmah.ErrorLogSectionHandler, Elmah" 
       requirePermission="false"/

Фактически, что вы говорите, пожалуйста, дайте Эльмах разрешение прочитать эту настройку:

<errorLog type="Elmah.VistaDBErrorLog, Elmah" connectionStringName="ElmahDB" />
person Kev    schedule 03.02.2011
comment
это помогло .. спасибо за помощь. Итак, необходимое разрешение .. к чему именно оно относится - person jvcoach23; 04.02.2011