【问题标题】:How to trace a ASP.NET Security Exception如何跟踪 ASP.NET 安全异常
【发布时间】:2010-09-21 09:20:03
【问题描述】:

如何找出导致以下错误的实际原因?该页面与其他页面相同,但由于某种原因,只有此页面出现此错误。它也只发生在具有中等信任级别的 ISP (GoDaddy) 上,我无法设置断点并尝试捕获它。

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.
堆栈跟踪: [SecurityException:请求'System.Security.Permissions.EnvironmentPermission,mscorlib,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'类型的权限失败。] System.Security.CodeAccessSecurityEngine.Check(对象需求, StackCrawlMark& stackMark, Boolean isPermSet) +0 System.Security.CodeAccessPermission.Demand() +59 System.IO.Path.GetTempPath() +54 hh.a(Int32 A_0, 布尔 A_1, 布尔 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, 布尔 A_2) +61
Version Information: Microsoft .NET Framework Version:2.0.50727.1433; ASP.NET Version:2.0.50727.1433

如果您遇到过这个问题,或者只是知道我可以如何解决或跟踪它,请添加您的答案。 ISP 要求中等信任级别。

【问题讨论】:

    标签: asp.net security debugging hosting


    【解决方案1】:

    在混淆的非调试程序集中设置断点很难。它可能会让你无处可去。

    找出混淆组件尝试访问临时路径的原因。

    【讨论】:

      【解决方案2】:

      您是否尝试过使用 IIS 的本地实例并将信任级别设置为中等?这将帮助您更快地调试和尝试一些东西。

      (无论如何要养成一个好习惯。您希望在尽可能接近生产的环境中进行测试。如果您不进行测试,VS Web 服务器肯定有一些重要的区别IIS 也是如此。)

      【讨论】:

      • 那么我将如何降低我在站点中所需的信任级别?假设我使用的是 Db4o,这需要我在文件系统中加载文件..
      • 对于 IIS7,您可以在服务器或网站级别的“.NET 信任级别”项下的 IIS 管理器中编辑信任级别。 technet.microsoft.com/en-us/library/cc753658(WS.10).aspx
      • 我知道如何更改信任,但如果我降低信任然后出现错误怎么办。我从那里去哪里?
      • 如果在测试较低信任级别后发现某个库损坏了,您必须使用另一个库、该库中不需要较高信任的不同方法,或者使用该库供应商重写代码以在可用的信任级别下工作。或者,将应用程序移至允许库当前需要的更高级别信任的服务器/主机。
      【解决方案3】:

      我不相信 GoDaddy 支持完全信任 - 尽管这可能最近发生了变化。错误是由System.IO.Path.GetTempPath调用引起的,需要EnvironmentPermission

      在那之前的调用堆栈被混淆了,所以我猜它来自组件供应商。检查更新或修复以获取他们的部分信任,或替换它。

      【讨论】:

      • 该页面上有一个 DevExpress 组件,但我将其删除,但该错误从未解决。我更改了 web.config,希望它能够重新编译。有没有其他方法可以强制页面在远程主机上编译?我的最后一个选择是重新创建没有该组件的页面,看看会发生什么
      • 这应该会导致重新编译。检查您是否还缓存该页面。如果没有,那么您可能仍然有错误并且它不是那个组件。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      • 2016-07-05
      • 2011-10-26
      • 2010-09-19
      • 1970-01-01
      • 2018-09-18
      相关资源
      最近更新 更多