如何将应用程序转换为在中等信任级别下运行?

Posted

技术标签:

【中文标题】如何将应用程序转换为在中等信任级别下运行?【英文标题】:How to convert application to run under Medium trust level? 【发布时间】:2011-05-07 06:49:35 【问题描述】:

我的 Web 应用程序由多个 Visual Studio 项目组成。它目前在高信任级别 (<trust level = "High" />) 下运行良好。当我尝试在中等信任级别下运行它时,我收到此错误:

安全异常

描述:应用程序试图执行安全策略不允许的操作。要授予此应用程序所需的权限,请联系您的系统管理员或在配置文件中更改应用程序的信任级别。

异常详细信息:System.Security.Security 例外:请求失败。

来源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[SecurityException: Request failed.]
System.RuntimeTypeHandle._GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark stackMark, Boolean loadTypeFromPartialName) +0
System.RuntimeTypeHandle.GetTypeByName(String name, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark stackMark) +64   
System.RuntimeType.PrivateGetType(String typeName, Boolean throwOnError, Boolean ignoreCase, Boolean reflectionOnly, StackCrawlMark stackMark) +58   
System.Type.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +65   
System.Web.Compilation.BuildManager.GetType(String typeName, Boolean throwOnError, Boolean ignoreCase) +342   
System.Web.Configuration.ConfigUtil.GetType(String typeName, String propertyName, ConfigurationElement configElement, XmlNode node, Boolean checkAptcaBit, Boolean ignoreCase) +52

版本信息:Microsoft .NET Framework 版本:2.0.50727.4952; ASP.NET 版本:2.0.50727.4955

识别问题并将应用程序转换为在中等信任下正常运行的最佳方法是什么?

【问题讨论】:

【参考方案1】:

看起来您正在进行一些动态配置解析 - 您是否在 web.config 中定义了一些自定义配置组 - 反射是在中等信任环境中最先关闭的事情之一,而且大多数主机将关闭它。

如果是这样,我建议尽可能创建一个显式的 configuration section 处理程序。

【讨论】:

以上是关于如何将应用程序转换为在中等信任级别下运行?的主要内容,如果未能解决你的问题,请参考以下文章

在中等信任下通过 GMail SMTP 发送电子邮件

如何自动化测试中等信任代码

.NET 4.0 中等信任级别和 MYSQL 连接

如何判断当前应用是不是为Medium Trust

如何将我的 Windows C 程序转换为在 Linux 系统上运行?

中等信任的 LDAP