Un opérateur?: Très simple en C#, combiné avec un simple tableau et un appel LINQ (to Objects) à Reverse() est apparemment suffisant pour provoquer l'exception " System.Security.VerificationException: opération pourrait déstabiliser l'exécution. " lorsqu'il est exécuté sur un site Web ASP.NET en cours d'exécution avec confiance « High » (notez que « Full » est la valeur par défaut)Pourquoi simple array et Linq génèrent VerificationException: opération peut déstabiliser l'exécution
Voici le code, ainsi que la solution de contournement simple que je suis venu avec:
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();
}
}
pour définir le niveau de confiance à « élevé », ce qui suit doit être ajouté au fichier web.config:
<trust level="High" originUrl=""/>
la solution est une fonctionnalité équivalente à la problématique: l'opérateur qui Repros le problème. Ma conjecture de la lecture des messages liés est qu'il s'agit d'un bug du compilateur C#. Quelqu'un sait ce qu'il se passe ici?