- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我最近尝试将一个由 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/
我正在尝试纠正一个 Func,我可以用它来访问属性的 get 方法,但遇到了绊脚石。 下面的动态方法创建得很好,但是当它被调用时我得到以下错误。 VerificationException,操作可能会
在我的 App i 中调试时有这个异常:{"Operation could destabilize the runtime."} 在 foreach 循环中: foreach (var item in
我需要在运行时使用 TypeBuilder 创建一个类型。这种类型应该实现一个特定的接口(interface),以便可以在编译时统一处理这种动态类型的实例。 该接口(interface)应返回一个对象
运行 RDLC 时,我在报告框架内显示以下消息: Failed to load host assembly. Operation could destabilize the runtime. 有谁知道
是否可以在 UnityContainer 中配置的另一种类型的构造函数中实例化在 UnityContainer 中配置的类型?使用我当前的解决方案,我得到了一个 ResolutionFailedExc
System.Security.VerificationException: Operation could destabilize the runtime. at Connance.Communic
我创建了一个非常简单的函数来执行以下操作: public static object[] ToArray(int ID) { return new object[4];
我目前正在玩反射,我的短代码有问题: public class Test { public Test() { } public string Call() {
我目前正在玩反射,我的短代码有问题: public class Test { public Test() { } public string Call() {
在我的程序中,我手工制作了我的 LINQ 表达式(我正在将我自己的表达式树转换为 LINQ - 我们目前使用 EF,但这可能会改变,所以我通过使用我自己的表达式来验证应用程序的这一部分并编写一些将其转
Server Error in '/' Application. 什么是解决这个问题的好方法?我让调试单步执行 global.asax 中的所有内容,并且那里没有错误。 Operation could
我们最近升级了一个 web/mvc 应用程序以使用 StrucutreMap 3.0.4 现在,当尝试在“Line Level Timings, All Methods with Source”或更高
我最近尝试将一个由 SubSonic 2.2 生成 DAL 的 .net 2.0 项目升级到 Visual Studio 2010 下的 .NET 4.0。 项目转换没有错误,但现在我在尝试启动它时收
这段代码: namespace ConsoleApplication3 { class Program { static void Main(string[] args
考虑以下代码: protected override IEnumerable GetListInternal( IQueryModel2 queryModel) { /// Cause
我是一名优秀的程序员,十分优秀!