2009-09-14 12 views
1

Je sais que Entity Framework prend en charge la confiance partielle, personnellement, je blogged about thatEntity Framework dans un environnement de confiance partielle

Il fonctionnait très bien, je l'ai testé et il était très bien. Maintenant, si vous téléchargez les échantillons attachés à mon post sur le sujet, il ne fonctionne plus sous la confiance partielle par défaut !!!

Quand je creusais dans l'assemblage System.Data.Entity en utilisant le réflecteur sur la position de l'échec "System.Data.Objects.LightweightCodeGenerator.ValidateSetterProperty (RuntimeMethodHandle setterMethodHandle, MethodInfo & setterMethodInfo, type & realType" Je remarqué qu'il appelle RuntimeMethodHandle. propriété de la valeur qui a l'attribut suivant sur accesseur get "[SecurityPermission (SecurityAction.LinkDemand, UnmanagedCode = true)]"

Je suis allé à ma configuration de confiance moyenne et a ajouté un autre drapeau "UnmanagedCode" ""

Je teste à nouveau l'application et ça a bien fonctionné.

Maintenant, de quoi s'agit-il ?! Ça fonctionnait avant alors pourquoi pas maintenant! Il manque quelque chose!!! System.Data.Entity a-t-il changé au cours de la publication de plusieurs mises à jour fréquentes de VS.NET 2008 SP1 et la dernière a été effectuée en août 2009. Parce qu'avant cette date, cela fonctionnait correctement.

Donc j'apprécierais que n'importe qui pourrait clarifier ceci et me guider si je me trompe, ou il y a quelque chose qui me manque.

+0

Je ne sais pas si cela est bug ou non! Mais je considère que c'est un bug mais je ne sais pas si c'est du côté de EntityFramework ou du côté BCL. Je suppose que la BCL a changé pour des raisons de sécurité. Avant la dernière mise à jour La propriété System.RuntimeMethodHandle.Value n'a pas d'attribut "[SecurityPermission (SecurityAction.LinkDemand, UnmanagedCode = true)]"! Je l'ai vérifié avec un réflecteur. Maintenant, il a [SecurityPermission (SecurityAction.LinkDemand, UnmanagedCode = true)] comme je l'ai mentionné dans mon post précédent. Il s'agit d'un problème car il arrête maintenant le support de Trust partiel. –

Répondre

1

Diego Vega PM dans l'équipe Entity Framework a répondu à cette question dans les forums Entity Framework avec le

suivant

Bonjour Muhammad,

Nous sommes conscients d'un problème dans la construction inclus dans Windows 7 et Windows Server 2008 R2 qui empêche Entity Framework de travailler dans Medium Trust.

La version de mscoree.dll et le message d'exception que vous décrivez correspondent au scénario.

Nous nous attendons à une solution avant adoption généralisée de Windows 7 et Windows Server 2008 R2, mais dans le quant à lui la recommandation est de continuer à utiliser Windows Server 2008 ou Windows Vista pour les tests et déploiement de EF applications basées sur Moyenne Trust.

Hope this helps, Diego

1

Il semble que vous ayez la preuve définitive d'un changement radical dans Entity Framework. Je voudrais aller à http://connect.microsoft.com/ et signaler un bug. Il serait probablement utile si vous pouviez confirmer qu'une modification était apportée en finissant l'ancien assembly sans l'attribut "UnmanagedCode = true". Incluez les deux versions dans le rapport de bogue. Par ailleurs, je viens de regarder RuntimeMethodHandle dans Reflector. L'accesseur get pour Value retourne "this.m_ptr;" et n'a pas de décorations d'attributs. Il est en mscorlib, ma version est 2.0.0.0 (je suis en cours d'exécution .NET 3.5 sur mon système de développement.)

+0

Fera cela. bonne idée merci pour le lien –