gpt4 book ai didi

c# - System.Security.VerificationException : Operation could destabilize the runtime.(亚音速 2.2)

转载 作者:太空狗 更新时间:2023-10-29 17:56:39 30 4
gpt4 key购买 nike

我最近尝试将一个由 SubSonic 2.2 生成 DAL 的 .net 2.0 项目升级到 Visual Studio 2010 下的 .NET 4.0。

项目转换没有错误,但现在我在尝试启动它时收到一条相当恶劣的错误消息。

System.Security.VerificationException: Operation could destabilize the runtime.  

at SubSonic.DataProvider.ApplyConfig(NameValueCollection config, Boolean& parameterValue, String configName) in C:\Documents and Settings\Desktop\4.0 Production\rel_1.0\server\Server.DAL\Server.DAL.SubSonic\DataProviders\DataProvider.cs:line 955
at SubSonic.DataProvider.Initialize(String name, NameValueCollection config) in C:\Documents and Settings\Desktop\4.0 Production\rel_1.0\server\Server.DAL\Server.DAL.SubSonic\DataProviders\DataProvider.cs:line 916
at System.Web.Configuration.ProvidersHelper.InstantiateProvider(ProviderSettings providerSettings, Type providerType)

抛出异常的代码:

    ApplyConfig(config, ref extractClassNameFromSPName, ConfigurationPropertyName.EXTRACT_CLASS_NAME_FROM_SP_NAME);

private static void ApplyConfig(System.Collections.Specialized.NameValueCollection config, ref bool parameterValue, string configName)
{
if(config[configName] != null)
{
parameterValue = Convert.ToBoolean(config[configName]);
}
}

它在这里执行类似的调用,唯一的区别是它严格来说是一个字符串而不是它正在操作的 bool 值。

private static void ApplyConfig(System.Collections.Specialized.NameValueCollection config, ref string parameterValue, string configName)
{
if(config[configName] != null)
{
parameterValue = config[configName];
}
}

config 定义为具有 3 个键的 System.Collections.Specialized.NameValueCollectiongenerateNullableProperties、connectionStringName、generatedNamespaceextractClassNameFromSPName == false

EDIT1:引发错误的代码在 Global.asax 的 Application_Start() 方法中

System.Data.SqlClient.SqlDependency.Start(SystemSetting.Schema.Provider.DefaultConnectionString);

EDIT2:错误冒出并引发引用我的 web.config 的 targetinvocation 错误

<SubSonicService defaultProvider="appPlan">
<providers>
<clear/>
<add name="appPlan" type="SubSonic.SqlDataProvider, appPlan.Server.DAL.SubSonic" generateNullableProperties="false" connectionStringName="appPlan" generatedNamespace="appPlan.Server.DAL"/>
</providers>
</SubSonicService>

有没有人遇到过这样的问题?我可以升级到 SubSonic3.x,但我相信这将是一项更大的任务。

谢谢。

最佳答案

我以前在直接从手工制作的 IL 生成程序集时看到过这个异常。 .NET 运行时验证程序集中原始指令的正确性,尤其是在将程序集加载到受限上下文中时。例如,有一个检查以确保在执行方法之前将所需数量的参数加载到调用堆栈中。

即使验证失败,程序集仍然可以加载;但它只能在完全信任的情况下运行。在部分信任的情况下,您会收到此“操作可能会破坏运行时的稳定性”错误。原因是如果程序集“行为不正确”,运行时无法保证程序集在部分信任下的安全操作。

您可以使用 PEVERIFY 工具(通过 Visual Studio 命令提示符可用)手动检查程序集。尝试验证所有引用的程序集以查看报告的内容。我怀疑 .NET 2.0 和 .NET 4.0 之间的验证规则发生了变化,现在导致 SubSonic 2.2 程序集之一的验证失败。

你在回复 Fun Mun Pieng 时提到的作弊也表明验证是问题所在。

关于c# - System.Security.VerificationException : Operation could destabilize the runtime.(亚音速 2.2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5199143/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com