Непубличный, вызывающий ошибку разрешений при отражении среднего доверия

StackOverflow https://stackoverflow.com/questions/1010016

Вопрос

Я должен сказать, что до сих пор, мне, вероятно, просто повезло, что я никогда не сталкивался с проблемами, связанными с веб-сайтом, работающим со средним доверием. Я только когда-либо разрабатывал приложения для интрасети или случайно использовал хостинговую компанию, которая работает с полным доверием. Но хост, который меня попросили использовать для недавнего проекта, работает со средним доверием, поэтому я пытаюсь, чтобы мое приложение запустило это. Пара вопросов - я разрабатываю на Windows XP. Можно ли настроить IIS для среднего доверия (проще для отладки) и / или это параметр web.config? По этому предмету имеется множество информации, и кривая обучения крутая.

Во-вторых, после долгих разборов и удаления кода, я думаю, что эта строка вызывает ошибку разрешений:

Для каждого FieldInfo как FieldInfo в Type.GetFields (BindingFlags.Instance или BindingFlags.NonPublic или BindingFlags.Public)

Кто-нибудь может уточнить, что это возможный кандидат, особенно? этот непубличный флаг? Это копия & Amp; вставил код (Coding Horror подчеркнул риск этого), поэтому я никогда не задумывался об этом. Я предполагаю, что цикл проходит через каждое поле в объекте, как в общедоступных, так и в непубличных полях, и я прочитал, что защищенные поля запрещены с учетом среднего доверия.

Ура, Роб.

Это было полезно?

Решение

Извините, Reflection with NonPublic эквивалентен полному доверию.

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

Другие советы

Да, веб-сайт на XP может быть настроен для работы со средним доверием:

В < system.web > раздел добавить следующее:

<!-- Case is important: it's Medium, not medium -->
<trust level="Medium"/>

И ты здесь.

Что вы можете обнаружить, так это то, что большинство хостов запускают свои сайты в слегка повышенном " Medium " установление доверия, с некоторыми дополнительными правами, выходящими за пределы по умолчанию - их специалисты должны быть в состоянии сказать вам, какие различия у них есть, если таковые имеются.

Если вы заглянете в:

C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\web_mediumtrust.config

вы увидите применяемые настройки по умолчанию.

Отражение - это одна из ключевых вещей, которые ограничены в среднем доверии - из замечаний на Страница GetFields :

  

Если запрошенное поле не является общедоступным, и у вызывающей стороны нет ReflectionPermission для отражения непубличных объектов вне текущей сборки, этот метод возвращает нулевую ссылку (Nothing в Visual Basic).

Поскольку это потенциально может вернуть значение null, вам, вероятно, следует проверить его на null перед тем, как начать его итерацию, или проверить, что FieldInfo не равна нулю / ничего, прежде чем его использовать.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top