Пытается ли развиваться для Medium Trust безнадежно?
Я начал разработку нового приложения MVC с использованием Entity Framework, в первую очередь кода, и Unity для внедрения зависимостей. Я использовал EF5 и Unity, потому что думал, что они должны работать в Medium Trust. Тем не менее, когда я бросил <trust level="Medium" />
тег в моем web.config
Я начал получать разрешения на отражение.
Всегда кажется, что когда бы я ни выходил за рамки использования встроенных вещей, таких как System.Data.SqlClient
Материал ADO.net Я всегда сталкиваюсь с проблемами в Medium Trust. Авто-картограф: сбой. NHibernate: сбой. MySQL: сбой Код EF5 первый: сбой. МОК: провал.
Я просто гоняюсь за несбыточной мечтой? Можно ли создать хорошо спроектированное и тестируемое веб-приложение, используя современные технологии, которые будут работать в Medium Trust?
В эпоху виртуальных машин / виртуальных серверов / облачных вычислений (и даже нескольких общих хостов, которые установят для ваших пулов приложений полное доверие) кто-нибудь нашел разработку для Medium Trust стоящей усилий?
2 ответа
Официальная позиция команды ASP.NET заключается в том, что Medium Trust устарел. Это означает несколько вещей:
- Мы автоматически устраняем все ошибки, связанные с Medium Trust, о которых нам сообщили, что они "не исправят".
- Мы предоставили хостерам указания, что им следует перейти от Medium Trust и использовать вместо этого надлежащую изоляцию на уровне ОС ( http://support.microsoft.com/kb/2698981).
- Мы удаляем поддержку Medium Trust из разрабатываемых нами фреймворков (MVC, WebAPI, SignalR и т. Д.). В дальнейшем приложения, построенные на этих платформах, потребуют полного доверия.
Здесь термин "Среднее доверие" выше относится ко всем конфигурациям с неполным доверием в ASP.NET, включая использование встроенных уровней доверия (минимальный, низкий, средний, высокий) или любых пользовательских уровней доверия.
Изменить 26 мая 2015 года. Платформа.NET Framework в целом утратила частичное доверие, и клиентам рекомендуется не полагаться на нее как на границу безопасности. Из MSDN:
Защита доступа к коду в.NET Framework не должна использоваться в качестве границы безопасности с частично доверенным кодом, особенно кодом неизвестного происхождения. Мы не советуем загружать и выполнять код неизвестного происхождения, не применяя альтернативные меры безопасности.
В общем, все, что нуждается в глубоком отражении, не может работать на Medium Trust
В твоем случае:
Automapper: используйте отражение, чтобы обнаружить совпадающие свойства и поток памяти для их клонирования (существует версия, которая на самом деле работает со средним доверием с некоторыми ограничениями)
NHIbernate: используйте отражение emit, чтобы разрешить отложенную загрузку, потому что отложенная загрузка в NH осуществляется прокси-серверами (во избежание этого вы можете отключить отложенную загрузку или использовать NHibernate ProxyGenerator, который является утилитой, которая помогает предварительно создавать прокси)
EF: На самом деле я не обнаружил больших проблем с EF и Medium Trust.... это не сериализация объекта с ассоциациями или коллекциями
IoC: IoC - это приложение-убийца рефлексии:) вы можете попробовать AutoFac, который работает на Medium Trust
В целом, Medium Trust - это большое ограничение... но все зависит от того, над каким проектом вы работаете. Также рассмотрите возможность использования хостинга Full Trust, такого как Arvixe.
Надеюсь это поможет