Исключение.Net Security при попытке отобразить элемент управления reCaptcha

Я скачал recaptcha.dll в 1.0.1.0 и 1.0.4.0. При попытке визуализации элемента управления я получаю следующее исключение:

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

Сведения об исключении: System.Security.Security Exception: сбой запроса разрешения типа "System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture= нейтральный, PublicKeyToken=b77a5c561934e089".

Трассировка стека:[SecurityException: запрос разрешения типа 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture= нейтральный, PublicKeyToken=b77a5c561934e089' не выполнен.] System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase) +0 System.Web.UI.NamespaceTagNameToTypeMapper.GetControlType(строковое tagName, атрибуты IDictionary, логическое throwOnError) +209

Решение этой проблемы, предоставляемое быстрым поиском в Google, заключается в использовании caspol.exe для добавления полного доверия к сборке recaptcha.dll.

C: \% path% \ caspol -af C: \ inetpub \ wwwroot \% path% \ bin \ recaptcha.dll

В этот момент я получаю следующую ошибку:

ОШИБКА: эта сборка не подписана

Кроме загрузки исходного кода и его локальной перекомпиляции, есть ли другой способ заставить это работать?

5 ответов

Я столкнулся с той же проблемой, и ваше решение помогло мне. Мне также пришлось выполнить следующие шаги с исходным кодом reCAPTCHA ASP.NET.

1) Откройте файл AssemblyInfo.cs проекта DLL и добавьте следующую инструкцию using.

использование System.Security;

2) Добавьте следующую строку в AssembleInfo.cs.

[сборка: AllowPartiallyTrustedCallers ()]

3) Перекомпилируйте dll и заново разверните ваши проекты. Эта ошибка должна быть решена.

ПРИМЕЧАНИЕ. Веб-сайт, над которым я работаю, использует 1and1.com в качестве хостинг-компании. Я также должен был установить свойство Proxy в коде, чтобы избежать исключения тайм-аута во время HttpWebRequest.

recaptcha.Proxy = new WebProxy("http://ntproxyus.lxa.perfora.net:3128");

Надеюсь, это кому-нибудь поможет, но теперь у меня есть reCAPTCHA, работающая на сайте ASP.NET, размещенном на 1and1.com.

У меня была такая же проблема. После некоторого удара головой я понял, что я скачал recaptcha.dll из zip-файла. Итак, я щелкнул правой кнопкой мыши на dll, зашел в свойства и нажал кнопку разблокировки.

Это решило проблему для меня.

Я столкнулся с двумя различными проблемами безопасности, пытаясь развернуть reCAPTCHA от Google на нашем производственном сервере в среде общего хостинга на hostmysite.com.

1) Во-первых, я вообще не смог отобразить форму. Вместо этого я бы увидел сообщение об ошибке "Эта сборка не допускает частично доверенных вызывающих". Это было исправлено путем загрузки библиотеки DLL, которую кто-то перекомпилировал из исходного кода с добавлением [assembly: AllowPartiallyTrustedCallers]. Загрузить DLL и получить дополнительную информацию можно здесь: https://code.google.com/p/recaptcha/issues/detail?id=100

2) После развертывания этой библиотеки DLL мне удалось получить reCAPTCHA для первоначального отображения в форме, но отправка формы привела к той же ошибке безопасности, указанной в исходном сообщении:

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

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

"Вероятно, он работал на вашем компьютере, потому что он настроен на среду полного доверия, в то время как веб-сервер, на котором находится сайт, настроен на Medium Trust. Поэтому он имеет ограниченный набор доверенных URI. Теперь я добавил URI для Google Recaptcha в список доверенных, и ваша форма теперь работает на сайте. Если у вас есть какие-либо проблемы, сообщите нам."

Будучи не в состоянии заставить это работать, используя неподписанную dll, которая сделана доступной для загрузки, я получил источник, скомпилировал и подписал его сам, и это прекрасно работает.

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

В IIS перейдите в пул приложений, там попал в ваш проект, щелкните правой кнопкой мыши и выберите Advanced Properties и установите LoadUserProfile в True.

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