Элма на коробке IIS 6 - PullRequest
       39

Элма на коробке IIS 6

3 голосов
/ 03 февраля 2011

У меня есть веб-сайт с запущенным на нем 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 выдает эту ошибку. Я провел поиск, но не могу найти то, что настроил неправильно. Надеялся, что кто-то другой уже решил это.

1 Ответ

2 голосов
/ 04 февраля 2011

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

Добавьте атрибут 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" />
...