Пытается ли развиваться для 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, который является утилитой, которая помогает предварительно создавать прокси)

Nhibernate ProxyGenerator

EF: На самом деле я не обнаружил больших проблем с EF и Medium Trust.... это не сериализация объекта с ассоциациями или коллекциями

IoC: IoC - это приложение-убийца рефлексии:) вы можете попробовать AutoFac, который работает на Medium Trust

AutoFac

В целом, Medium Trust - это большое ограничение... но все зависит от того, над каким проектом вы работаете. Также рассмотрите возможность использования хостинга Full Trust, такого как Arvixe.

Надеюсь это поможет

Другие вопросы по тегам