2010-10-29 22 views
5

He descargado recaptcha.dll en 1.0.1.0 y 1.0.4.0. Cuando se trata de representar el control, me sale el siguiente excepción:.Net Excepción de seguridad al intentar renderizar un control reCaptcha

Security Exception Description: The application attempted to perform an operation not allowed by the security policy. To grant this application the required permission please contact your system administrator or change the application's trust level in the configuration file.

Exception Details: System.Security.SecurityException: Request for the permission of type 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.

Stack Trace:[SecurityException: Request for the permission of type 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.] System.Reflection.Assembly._GetType(String name, Boolean throwOnError, Boolean ignoreCase) +0 System.Web.UI.NamespaceTagNameToTypeMapper.GetControlType(String tagName, IDictionary attribs, Boolean throwOnError) +209

La solución a esto, según lo dispuesto por una rápida búsqueda en Google, es utilizar caspol.exe añadir plena confianza al ensamblado recaptcha.dll.

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

En este punto, consigo el error siguiente:

ERROR: This assembly is not strong name signed

Si no se descarga el código fuente y se vuelve a compilar localmente, ¿hay alguna otra forma de hacerlo funcionar?

Respuesta

0

Al no poder hacer que esto funcione con el dll sin firmar que está disponible para su descarga, obtuve la fuente, la compilé y la firmé yo mismo, y esto funciona bien.

Hubiera sido genial si algo, en algún lugar a lo largo del camino, había indicado que podría tener que hacer esto ...

3

me encontré con el mismo problema y su solución me ayudó. También tuve que realizar los siguientes pasos en el código fuente reCAPTCHA ASP.NET.

1) Abra el archivo AssemblyInfo.cs del proyecto DLL y agregue la siguiente instrucción de uso.

usando System.Security;

2) Agregue la siguiente línea a AssembleInfo.cs.

[assembly: AllowPartiallyTrustedCallers()]

3) Recomiple los archivos DLL y volver a implementar sus proyectos. Este error debe ser resuelto.

NOTA: El sitio web en el que estoy trabajando usa 1and1.com como su empresa de alojamiento web. También tuve que establecer la propiedad Proxy en el código subyacente para evitar una excepción de tiempo de espera durante HttpWebRequest.

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

Esperamos que esto ayude a alguien, pero ahora tengo reCAPTCHA en marcha y funcionando en un sitio ASP.NET alojado en 1and1.com.

+0

En una manguera compartida no podemos usar la herramienta" caspol.exe "mencionada en la respuesta anterior. No tuve que modificar el archivo AssemblyInfo.cs. Cambié la URL de proxy para la recaptcha y funcionó en el alojamiento compartido de 1and1.com. Tu solución me ayudó. – Rahatur

2

Tuve este mismo problema. Después de algunos headbanging, me di cuenta de que había descargado recaptcha.dll desde un archivo comprimido. Entonces, hice clic derecho en el dll, fui a propiedades y presioné el botón de desbloqueo.

Eso resolvió el problema para mí.

0

en el IIS ir a la grupo de aplicaciones, no tiene a su proyecto, clic derecho y seleccionar Propiedades avanzadas y establecer LoadUserProfile en True.

1

me encontré con dos problemas de seguridad diferentes al tratar de implementar reCAPTCHA de Google en nuestro servidor de producción en un entorno de alojamiento compartido en hostmysite.com

1) En primer lugar, no pude conseguir el formulario para mostrar a todos.En su lugar, vería un mensaje de error que decía "Ese ensamblado no permite llamadas parcialmente confiables". Eso se solucionó al descargar una DLL que alguien compiló desde el código fuente con la adición de [assembly: AllowPartiallyTrustedCallers]. La descarga DLL y más detalles están aquí: https://code.google.com/p/recaptcha/issues/detail?id=100

2) Después de implementar que DLL yo era capaz de obtener el reCAPTCHA para mostrar inicialmente en el formulario, pero enviar el formulario resultó en el mismo error de seguridad que aparece en el post original :

"Descripción:.. la aplicación intentó realizar una operación no permitida por la política de seguridad para conceder esta solicitud, el permiso necesario ponerse en contacto con el administrador del sistema o cambiar el nivel de confianza de la aplicación en el archivo de configuración"

Envié un ticket a nuestro soporte de hosting y pudieron solucionar ese problema, con esta explicación:

"Probablemente estaba funcionando en su computadora porque la tiene configurada en un entorno de plena confianza mientras que el servidor web en el que está el sitio está configurado en Confianza media. Por lo tanto, tiene un conjunto restringido de URI de confianza. Ahora agregué el URI de Recaptcha de Google a la lista de confianza y su formulario ahora está trabajando en el sitio. Si tiene más problemas, avísenos "

Cuestiones relacionadas