web-dev-qa-db-fra.com

Essayer de développer pour Medium Trust est-il une cause perdue?

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?

43
Sam

La position officielle de l'équipe ASP.NET est que Medium Trust est obsolète. Cela signifie plusieurs choses:

  • Nous résolvons automatiquement tous les bogues liés à la confiance moyenne qui nous ont été signalés comme "ne seront pas corrigés".
  • Nous avons indiqué aux hébergeurs qu'ils devaient migrer loin de Medium Trust et utiliser à la place une isolation appropriée au niveau du système d'exploitation ( http://support.Microsoft.com/kb/2698981 ).
  • Nous supprimons le support Medium Trust des frameworks que nous développons (MVC, WebAPI, SignalR, etc.). À l'avenir, les applications basées sur ces cadres nécessiteront une confiance totale.

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.

68
Levi

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)

Nhibernate ProxyGenerator

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

AutoFac

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

8
Simone Belia