【问题标题】:Not allowed to use reflection in asp.net mvc2 running on a secure server?不允许在安全服务器上运行的 asp.net mvc2 中使用反射?
【发布时间】:2010-10-28 14:39:52
【问题描述】:

我正在尝试在安全服务器上部署网站,但我遇到了反射问题。 我想这与安全有关,但我不太确定。

在做Assembly.GetTypes()时出错

ReflectionTypeLoadException:无法加载一种或多种请求的类型。检索 LoaderExceptions 属性以获取更多信息。] System.Reflection.Module._GetTypesInternal(StackCrawlMark& stackMark) +0 System.Reflection.Assembly.GetTypes() +105

如果我只是忽略这些异常并继续从程序集中加载,则不会加载任何内容。似乎我根本不允许对任何程序集执行此操作。当我在不安全的网络服务器中运行时,一切正常。我对 IIS、mvc 或 .net 安全策略了解不多,因此我们将不胜感激任何正确方向的帮助。

这是导致异常的代码:

private static IEnumerable<IModule> GetModules()
{
    foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
    {
        foreach (var type in assembly.GetTypes()) // <--- This one throws
        {
            var moduleType = type.GetInterface(typeof(IModule).Name);
            if (moduleType != null)
            {
                IModule module = null;
                try
                {
                    module = (IModule)Activator.CreateInstance(type, null);
                }
                catch (ReflectionTypeLoadException ex)
                {
                    // GetInterface() get's all interfaces with the same
                    // name, so we'll just skip those who isn't ours
                    logger.Warn("Could not load module", ex);
                }

                if( module != null)
                    yield return module;
            }
        }
    }
}

【问题讨论】:

  • 检查以确保您没有加载任何动态程序集。我在使用 MVC 和动态程序集时遇到了类似的问题,但我不确定它是否相同。
  • 您能定义“安全服务器”和“非安全服务器”的含义吗?您是指信任级别、HTTP / HTTPS 还是其他? (我假设您正在谈论基于您的错误的信任级别,但只是想确认一下。)此外,异常消息告诉您查看异常对象的 LoaderExceptions 属性。请张贴。您还可以通过异常对象的 Types 属性查看成功加载的类型。
  • @Levi:我想的是 HTTP/HTTPS。我不确定如何查看 LoaderException,因为我没有在该计算机上安装 VS..

标签: asp.net-mvc-2 iis-6 https


【解决方案1】:

我发现了错误。和 HTTP/HTTPS 一点关系都没有。

这篇文章帮助我走上了正轨http://forums.asp.net/t/1196710.aspx

依赖模块中的某些程序集未复制到输出文件夹。我的开发机器和测试服务器在 GAC 中有这些,所以一切正常。

我明确添加了这些组件,现在一切正常。

感谢您的宝贵时间

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 1970-01-01
    • 2016-12-19
    • 1970-01-01
    • 2015-12-29
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多