¿Tratar de desarrollar para Medium Trust una causa perdida?

Empecé a desarrollar una nueva aplicación MVC con Entity Framework primero en código y Unity para dependency injection. Usé EF5 y Unity porque pensé que debían funcionar en Medium Trust. Sin embargo, cuando lancé la etiqueta en mi web.config , comencé a recibir excepciones de Permiso de Reflexión.

Siempre parece que cada vez que voy más allá del uso de cosas integradas como las cosas de System.Data.SqlClient ADO.net siempre encuentro problemas en Medium Trust. Auto-Mapper: falla. NHibernate: falla MySQL: falla Primer código EF5: error. IOC: falla

¿Solo estoy persiguiendo un sueño imposible? ¿Es posible lograr una aplicación web bien estructurada y comprobable que utilice tecnología moderna que se ejecutará en Medium Trust?

En la era de las VM / Servidores Virtuales / Cloud Computing (e incluso algunos hosts compartidos que establecerán sus pools de aplicaciones en Full Trust), ¿ha encontrado alguien que desarrolle para Medium Trust que valga la pena el esfuerzo?

La posición oficial del equipo ASP.NET es que Medium Trust está obsoleto. Esto significa algunas cosas:

  • Estamos resolviendo automáticamente todos los errores relacionados con Medium Trust que se nos informan como “no se corregirá”.
  • Hemos proporcionado orientación a los proveedores de servicios de hospedaje para que migren lejos de Medium Trust y utilicen un aislamiento de nivel de sistema operativo adecuado ( http://support.microsoft.com/kb/2698981 ).
  • Estamos eliminando el soporte de Medium Trust de los marcos que desarrollamos (MVC, WebAPI, SignalR, etc.). En el futuro, las aplicaciones creadas en estos marcos requerirán plena confianza.

Aquí, el término “confianza media” anterior se refiere a todas las configuraciones de confianza no completa en ASP.NET, incluido el uso de los niveles de confianza incorporados (mínimo, bajo, medio, alto) o cualquier nivel de confianza personalizado.

Editar 26 de mayo de 2015: .NET Framework como un todo ha dejado de lado la confianza parcial, y se recomienda a los clientes no confiar en él como un límite de seguridad. Desde MSDN :

Code Access Security en .NET Framework no debe usarse como límite de seguridad con código parcialmente confiable, especialmente código de origen desconocido. Recomendamos no cargar y ejecutar código de origen desconocido sin implementar medidas de seguridad alternativas.

En general, todo lo que necesita Reflexión en profundidad no puede ejecutarse en Medium Trust

En tu caso:

Automapper: utilice la reflexión para descubrir las propiedades de coincidencia y la secuencia de memoria para clonarlas (hay una versión que funciona realmente en confianza media con alguna limitación)

NHIbernate: utilice emitir reflection para permitir la carga diferida porque la carga diferida en NH se implementa mediante proxies (para evitar esto, puede desactivar la carga diferida o utilizar un ProxyGenerator de NHibernate que es una utilidad que ayuda a preprocesar proxies)

Nhibernate ProxyGenerator

EF: En realidad, no encontré grandes problemas con EF y Medium Trust …. es no serializar objeto con asociaciones o colecciones

IoC: IoC es la aplicación Killer de la reflexión 🙂 puedes probar AutoFac que funciona en Medium Trust

AutoFac

En general, Medium Trust es una gran limitación … pero todo depende del tipo de proyecto en el que estés trabajando. Considere también usar un hosting Full Trust como Arvixe

Espero que esto ayude