C# 中的一个非常简单的 ?: 运算符,结合一个简单的数组和对 Reverse() 的 LINQ(对象)调用显然足以导致异常“System.Security.VerificationException:操作可能破坏运行时”。在以“高”信任运行的 ASP.NET 网站上运行时(请注意,“完整”是默认设置)
这是代码,以及我想出的简单解决方法:
protected void Page_Load(object sender, EventArgs e) {
Repro();
//Workaround();
}
private IEnumerable<string> Repro() {
bool test = true;
string[] widgets = new string[0];
return test ? widgets : widgets.Reverse();
}
private IEnumerable<string> Workaround() {
bool test = true;
string[] widgets = new string[0];
if (test) {
return widgets;
} else {
return widgets.Reverse();
}
}
要将信任级别设置为“高”,必须将以下内容添加到 web.config 文件中:
<trust level="High" originUrl=""/>
解决方法是与有问题的 ?: 重现问题的运算符等效的功能。我从阅读相关文章的猜测是这是一个 C# 编译器错误。有人知道这里发生了什么吗?