C#中一個非常簡單的?:操作符與一個簡單的數組和LINQ(對象)調用Reverse()顯然足以導致異常「 System.Security.VerificationException:操作可能會破壞運行時的穩定性。「當「高」信任運行ASP.NET網站運行(注意,「全」是默認值)爲什麼簡單數組和Linq生成VerificationException:操作可能會使運行時不穩定
下面是代碼,加上我想出了簡單的解決方法:
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=""/>
解決方法是等同於問題的功能:操作員repros問題。我從閱讀相關帖子的猜測是這是一個C#編譯器錯誤。任何人都知道這裏發生了什麼?