Очень простой оператор?: В C # в сочетании с простым массивом и LINQ (to Objects), вызов Reverse (), по-видимому, достаточно для исключения «System.Security.VerificationException: операция может дестабилизировать среду выполнения». при запуске на веб-сайте ASP.NET, работающем с доверием «High» (обратите внимание, что по умолчанию «Full»)
Вот код, плюс простой обходной путь, который я придумал:
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 #. Кто-нибудь знает, что здесь происходит?