【问题标题】:Operation could destabilize the runtime in StructureMap操作可能会破坏 StructureMap 中的运行时
【发布时间】:2014-05-15 15:53:17
【问题描述】:

我在本地计算机上的一个 ASP.NET 4.5 MVC 应用程序中遇到此错误。使用 ASP.NET 4.5 设置并使用 StructureMap 的其他应用程序工作正常。

对此的任何帮助/解决方案将不胜感激。 导致这种情况的代码行是:

using StructureMap;
using StructureMap.Graph;

namespace Management.Web.DependencyResolution
{
    public static class IoC
    {
        public static IContainer Initialize()
        {
            ObjectFactory.Initialize(x =>
            {
                x.Scan(scan =>
                {
                    scan.TheCallingAssembly();
                    scan.WithDefaultConventions();
                    scan.Assembly("Management.Core");
                    scan.Assembly("Management.DAL");
                    scan.Assembly("Management.BusinessServices");
                    scan.Assembly("Management.Infrastructure");
                });
                x.For<INavigationService>().Use<NavigationService>();
            });
            return ObjectFactory.Container;
        }
    }
}

【问题讨论】:

  • 你试过这个更新吗? support.microsoft.com/kb/2748645 在这里有更详细的描述elegantcode.com/2012/08/23/…
  • 是的,我有。收到以下消息:软件更新 KB2748645 安装向导不适用,或被计算机上的其他情况阻止。请点击以下链接了解更多详情。
  • 我安装了错误的版本。问题已修复。非常感谢。
  • 您好,我还收到以下消息:软件更新 KB2748645 安装向导不适用,或者被您计算机上的其他情况阻止。请点击以下链接了解更多详情。我在 x86 和 x64 上都试过了,但我得到了同样的错误。 @MurtuzaB,你是怎么克服的?

标签: c# asp.net structuremap verificationexception


【解决方案1】:

有一个 .Net 更新可以解决这个问题。 KnowledgeBase 2748645

当您使用某些第三方控件时,您可能会收到 System.Security.VerificationException 异常。这个问题 如果以下条件为真,则发生:

第三方控件使用泛型类型。

通过声明标记为的程序集启用 CLR 验证程序 安全透明。

this blog post 中更详细地描述了该问题。

问题存在于 IL 级别,仅在 CLR 时检测到 验证程序在代码上执行。验证者确保 IL 在发送到 JIT 编译器之前是类型安全的,如果它检测到 并发出(像这样)它会向你吠叫。

【讨论】:

  • .NET 4.0 有类似的补丁吗?
  • 这个问题在 4.5.1 或 4.5.2 版本中修复了吗?我宁愿将我们服务器上的框架更新到受支持的版本,也不愿安装修补程序。
  • 我有同样的问题,但我使用的是 Windows 8.1,该修复不适用。我该如何解决?谢谢
  • 我对结构图 v3 有类似的异常。我发现如果我使用structuremap v2 package,也不例外。可能是因为 v3 没有强名称,但 v2 有。希望这对任何人都有帮助。
  • @brugnner - 两个链接都消失了。我能做的最好的就是将链接更改为指向我刚刚编辑到答案中的网络存档。
【解决方案2】:

KB2748645 不适用于 Windows 8/8.1/10。在这种情况下,您可以尝试:运行 -> 打开或关闭 Windows 功能 -> 重新安装 .NET Framework 4.5 & IIS。

注意:如果您有 ANTS 8.5 Performance Profiler,请禁用并取消附加它。

这对我有帮助。

【讨论】:

    猜你喜欢
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2012-08-22
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多