Как отследить исключение безопасности ASP.NET

Как я могу выяснить, что на самом деле вызывает следующую ошибку? Страница такая же, как и другие страницы, но по какой-то причине только эта страница имеет эту ошибку. Это также происходит только с интернет-провайдером (GoDaddy) с уровнем доверия Medium, и я не могу установить точку останова и попытаться ее поймать.

Server Error in '/' Application.
Security Exception
Description: The application attempted to perform an operation not allowed by the security policy.  To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.

Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Ошибка источника:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:

    [SecurityException: Request for the permission of type 'System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.]
       System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) +0
       System.Security.CodeAccessPermission.Demand() +59
       System.IO.Path.GetTempPath() +54
       hh.a(Int32 A_0, Boolean A_1, Boolean A_2) +20
       jg.b(c A_0, UInt64 A_1) +234
       ei.b(c A_0, UInt64 A_1) +18
       jg.a(c A_0, UInt64 A_1, Boolean A_2) +61
    
Version Information: Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433

Если у вас возникла эта проблема или вы просто знаете, как ее исправить или отследить, пожалуйста, добавьте свой ответ. ISP требует уровень доверия Medium.


person Brian Boatright    schedule 07.11.2008    source источник


Ответы (3)


Вы пробовали использовать локальный экземпляр IIS и установить средний уровень доверия? Это поможет вам отладить и попробовать что-то немного быстрее.

(И это хорошая привычка в любом случае. Вы хотите тестировать в среде, максимально приближенной к производственной. И веб-сервер VS определенно имеет несколько важных отличий, которые могут вам помочь, если вы не будете тестировать и в IIS. )

person Jon Adams    schedule 03.05.2009
comment
Итак, как мне снизить требуемый уровень доверия к сайту? Скажем, я использую Db4o, который требует, чтобы я загрузил файл в файловую систему .. - person Boris Callens; 07.06.2010
comment
Для IIS7 вы можете изменить уровень доверия в диспетчере IIS в элементе .NET Trust Levels на уровне сервера или веб-сайта. technet.microsoft.com/en-us/library/cc753658 (WS.10) .aspx - person Jon Adams; 08.06.2010
comment
Я знаю, как изменить доверие, но что, если я его снизлю, а затем получу ошибки. Куда мне дальше идти? - person Boris Callens; 08.06.2010
comment
Если после тестирования более низкого уровня доверия вы обнаружите, что библиотека ломается, вам нужно либо использовать другую библиотеку, другой метод в этой библиотеке, который не требует более высокого уровня доверия, либо работать с поставщиком библиотеки, чтобы переписать код для работы под доступный уровень доверия. Или переместите приложение на сервер / хост, который обеспечивает более высокий уровень доверия, которого требует библиотека в настоящее время. - person Jon Adams; 09.06.2010

Я не верю, что GoDaddy поддерживает полное доверие, хотя в последнее время это могло измениться. Ошибка вызвана System.IO.Path. GetTempPath, для которого требуется EnvironmentPermission .

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

person Mark Brackett    schedule 07.11.2008
comment
на этой странице был компонент DevExpress, но я удалил его, но ошибка так и не разрешилась. Я изменил web.config в надежде, что он перекомпилируется. Есть ли другой способ заставить страницу компилироваться на удаленном хосте? Мой последний вариант - воссоздать страницу, на которой не было этого компонента, и посмотреть, что произойдет. - person Brian Boatright; 08.11.2008
comment
Это должно было вызвать перекомпиляцию. Убедитесь, что вы также не кешируете страницу. Если нет, то, вероятно, у вас все еще есть ошибка, и это был не тот компонент. - person Jon Adams; 03.05.2009

Трудно установить точки останова в запутанных, не отлаживаемых сборках. Скорее всего, это ни к чему не приведет.

Узнайте, почему запутанный компонент пытается получить доступ к временному пути.

person leppie    schedule 09.07.2009