Каковы наиболее распространенные, типичные вещи, чтобы избежать кодирования в моем приложении ASP.NET, чтобы оно работало в среде Medium Trust на общем хосте? - PullRequest
8 голосов
/ 09 ноября 2008

Что мешает вам сделать Medium Trust? Например, я уже узнал, что Medium Trust мешает вам использовать System.IO.Path.GetTempPath (). Какие еще вещи?

Ответы [ 6 ]

4 голосов
/ 09 ноября 2008

Вот как узнать о проблемах доверия и решить их.

1) Найдите в своих папках Windows \ Microsoft.NET \ Framework [ВАША ВЕРСИЯ] \ CONFIG файлы:

  • web.config (это корневой конфигурационный файл)
  • web_mediumtrust.config
  • web_hightrust.config

2) Измените web.config на

<trust level="Medium" originUrl="" />

3) Попробуйте ваше приложение ASP.NET. Мой не удалось с ошибкой разрешения.

4) Различают web_mediumtrust.config и web_hightrust.config в инструменте сравнения, таком как WinMerge.

5) Скопируйте настройки с высокой на среднюю по одной и посмотрите, как они влияют на ваше приложение. В моем случае сообщение об ошибке ссылается на ConfigurationPermission, поэтому его было легко диагностировать.

Если вы сможете определить точные строки в файле web_mediumtrust.config, которые блокируют вас, то, возможно, вы сможете поделиться этим со своей хостинговой компанией и иметь больше шансов решить эту проблему.

Больше документации здесь:
http://msdn.microsoft.com/en-us/library/aa302425.aspx

@ Оли, мое приложение IS размещено на GoDaddy, и мне пришлось делать некоторые обходные пути в коде, когда я начал использовать Lucene.NET. Мне пришлось изменить исходный код Lucene.NET, чтобы не использовать GetTempPath и System.IO.FileInfo.

3 голосов
/ 09 ноября 2008

Большинство общих хостов не используют истинную среду среднего доверия, потому что она ограничивает некоторые вещи, которые слишком важны. Другие ограничивают некоторые дополнительные настройки по своим собственным анальным причинам.

Лучшее, что вы можете сделать, это спросить у своего хоста, какие настройки они используют для ASPNET. Спросите спецификации уровня доверия, который они используют. Узнайте пределы памяти. Получив эти данные, вы сможете повторить сценарий на местном уровне.

Если они не скажут вам, просто установите ваше приложение для работы со средним доверием, но это (очевидно) не обязательно будет работать, если они используют измененный уровень доверия.

Вот некоторая информация о настройке уровней доверия в IIS .

В общем, единственная проблема, с которой я столкнулся: если вы отправляете сборки, убедитесь, что вы разрешаете частично доверенные запросы (это метатег сборки), иначе вы не сможете их использовать.

Вот выдержка из Информационная страница среднего доверия GoDaddy :

Приложения, работающие в среде Medium уровень доверия не имеет доступа к реестру, нет доступа к журналу событий Windows, и не может использовать ReflectionPermission (но можно использовать Reflection). такие приложения могут общаться только с определенный диапазон сетевых адресов и доступ к файловой системе ограничен виртуальный каталог приложения иерархия.

Использование среднего уровня доверия предотвращает приложения от доступа к общему системные ресурсы и устраняет потенциал для применения вмешательство. Добавление OleDbPermission и OdbcPermission позволяет приложениям использовать этих поставщиков данных для доступа базы данных. WebPermission изменен разрешить исходящие http и https трафика.

Это может не совпадать с тем, что вам придется обходиться с вашим хостом (если вы не с GoDaddy), но это типичный пример.

3 голосов
/ 09 ноября 2008

Кто может быть уверен? Вот почему вы должны разрабатывать с уровнем доверия, установленным в вашем файле web.config.

 <trust level="Full|High|Medium|Low|Minimal" />
0 голосов
/ 15 января 2009

При среднем доверии, по крайней мере на моем хосте, вызовы P / INVOKE недоступны, т. Е. Использование [DLLImport] для вызова компонента COM не будет работать.

-Edoode

0 голосов
/ 10 декабря 2008

Библиотека system.runtime.serialization полностью недоступна при среднем доверии.

Я написал это для сериализации / десериализации json и выяснил трудный путь. Потребовалась неделя, чтобы заставить сотрудника подтвердить, что виноваты ограничения среднего доверия. В результате я сменил хостинговую компанию.

0 голосов
/ 09 ноября 2008

Убедитесь, что любые сторонние библиотеки / фреймворки (на ум приходит Castle) собраны (или могут быть построены) со средним доверием.

...