J'ai commencé à développer une nouvelle application MVC avec Entity Framework code-first et Unity pour l'injection de dépendances. J'ai utilisé EF5 et Unity parce que je pensais qu'ils étaient censés fonctionner dans Medium Trust. Cependant, quand j'ai jeté le <trust level="Medium" />
tag dans mon web.config
, J'ai commencé à obtenir des exceptions d'autorisation de réflexion.
Il semble toujours que chaque fois que je vais au-delà de l'utilisation de choses intégrées comme le System.Data.SqlClient
ADO.net stuff Je rencontre toujours des problèmes dans Medium Trust. Auto-Mapper: échec. NHibernate: échec. MySQL: échouer. EF5 Code en premier: échec. CIO: échec.
Suis-je juste à la poursuite d'un rêve de pipe? Est-il possible de réaliser une application Web bien conçue et testable en utilisant une technologie moderne qui fonctionnera en Medium Trust?
À l'ère des machines virtuelles/serveurs virtuels/cloud computing (et même quelques hôtes partagés qui définiront vos pools d'applications sur Full Trust), quelqu'un a-t-il trouvé que le développement pour Medium Trust en valait la peine?
La position officielle de l'équipe ASP.NET est que Medium Trust est obsolète. Cela signifie plusieurs choses:
Ici, le terme "confiance moyenne" ci-dessus fait référence à toutes les configurations de confiance non totale dans ASP.NET, y compris l'utilisation des niveaux de confiance intégrés (minimal, faible, moyen, élevé) ou tout niveau de confiance personnalisé.
Edit 26 mai 2015: Le .NET Framework dans son ensemble a déprécié la confiance partielle, et il est conseillé aux clients de ne pas s'y fier comme limite de sécurité. à partir de MSDN :
La sécurité d'accès au code dans .NET Framework ne doit pas être utilisée comme limite de sécurité avec du code partiellement fiable, en particulier du code d'origine inconnue. Nous vous déconseillons de charger et d'exécuter du code d'origine inconnue sans mettre en place des mesures de sécurité alternatives.
En général, tout ce qui nécessite une réflexion approfondie ne peut pas fonctionner sur Medium Trust
Dans ton cas:
Automapper: utilisez la réflexion pour découvrir les propriétés correspondantes et le flux de mémoire pour les cloner (il existe une version qui fonctionne réellement en confiance moyenne avec certaines limitations)
NHIbernate: utilisez la réflexion émise pour permettre le chargement paresseux car le chargement paresseux dans NH est implémenté par des proxys (pour éviter cela, vous pouvez désactiver le chargement paresseux ou utiliser le NHibernate ProxyGenerator qui est un utilitaire qui aide à pré-créer des proxys)
EF: En fait, je n'ai pas trouvé de gros problèmes avec EF et Medium Trust .... est de ne pas sérialiser l'objet avec des associations ou des collections
IoC: IoC est l'application tueur de réflexion :) vous pouvez essayer AutoFac qui fonctionne sur Medium Trust
En général, Medium Trust est une grosse limitation ... mais tout dépend du type de projet sur lequel vous travaillez. Pensez également à utiliser un hébergement Full Trust comme Arvixe
J'espère que cela t'aides