2008-11-09 6 views

Respuesta

4

Aquí se explica cómo aprender y resolver problemas de confianza.

1) Busca en tu Windows \ Microsoft.NET \ Framework [SU VERSIÓN] \ carpetas de configuración para los archivos:

  • web.config (este es el archivo de configuración de la raíz)
  • web_mediumtrust.config
  • web_hightrust.config

2) Cambiar el web.config decir

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

3) Prueba tu ASP.NET aplicación El mío falló con un error de permiso.

4) Diff the web_mediumtrust.config y web_hightrust.config en una herramienta diff, como WinMerge.

5) Copie los ajustes de alto a medio uno a la vez y vea cómo afectan a su aplicación. En mi caso, el mensaje de error se refería a ConfigurationPermission, por lo que era fácil de diagnosticar.

Si puede precisar las líneas precisas en el archivo web_mediumtrust.config que lo están bloqueando, entonces tal vez pueda compartir eso con su compañía de alojamiento y tener una mejor oportunidad de resolverlo.

más documentación aquí:
http://msdn.microsoft.com/en-us/library/aa302425.aspx

@Oli, mi aplicación SE alojado en GoDaddy y tuve que hacer algunas soluciones de código cuando empecé a usar Lucene.NET. Tuve que modificar el código fuente de Lucene.NET para no usar GetTempPath y System.IO.FileInfo.

+0

Simplemente señalaré lo que probablemente sea obvio para todos los demás, pero tuve que comprobar solo asegurarme de que: debería ir en la sección , y que el atributo de nivel distingue entre mayúsculas y minúsculas, tan mayúscula "M", minúscula todo lo demás: S –

3

¿Quién puede estar seguro? Es por eso que debe desarrollar con un nivel de confianza de medio establecido en su web.config.

<trust level="Full|High|Medium|Low|Minimal" /> 
3

La mayoría de los hosts compartidos no utilizan un verdadero entorno de confianza media porque restringe algunas cosas que son demasiado importantes. Otros restringen algunas configuraciones adicionales por sus propios motivos anales.

Lo mejor que puede hacer es preguntarle a su host qué configuración usan para ASPNET. Pregunte por las especificaciones del nivel de confianza que están usando. Averigua los límites de memoria. Una vez que tenga esos detalles, podrá replicar el escenario a nivel local.

Si no te lo dicen, simplemente configura tu aplicación para que se ejecute en confianza media, pero (obviamente) no funcionará necesariamente si está utilizando un nivel de confianza modificado.

Aquí está some information on setting trust levels in IIS.

En general, el único problema que me he encontrado es: si está empujando ensamblajes, asegúrese de permitir solicitudes parcialmente confiables (es una metaetiqueta de ensamblaje); de lo contrario, no podrá usarlas.

He aquí un extracto de GoDaddy's Medium Trust information page:

aplicaciones que operan bajo un nivel de confianza medio no tienen acceso al registro, no tienen acceso al registro de eventos de Windows, y no se puede utilizar ReflectionPermission (pero puede utilizar la reflexión) . Tales aplicaciones solo pueden comunicarse con un rango definido de direcciones de red y el acceso al sistema de archivos está limitado a jerarquía de directorios virtuales de la aplicación .

Con un nivel de confianza medio impide aplicaciones tengan acceso compartido recursos del sistema y elimina el potencial para la aplicación interferencia. Agregar OleDbPermission y OdbcPermission permite que las aplicaciones utilicen esos proveedores de datos para acceder a las bases de datos . WebPermission se modifica para permitir el tráfico saliente de http y https .

Puede que no coincida exactamente con lo que tendrá que trabajar con su host (a menos que esté con GoDaddy), pero es un ejemplo típico.

+0

¿Existe documentación en alguna parte que me mostraría cómo configurar un nivel de confianza medio en mi propio ordenador, a probar las cosas? Miré en MSDN y tuve problemas para encontrar ... –

+0

Claro, acabo de agregar un enlace a la publicación. – Oli

0

Asegúrate de que las bibliotecas/frameworks de terceros (Castle viene a la mente) están compiladas (o pueden construirse) en confianza media.

0

La biblioteca system.runtime.serialization no está disponible por completo en la confianza media.

He codificado esto para json serialization/deserialization y descubrí por las malas. Tomó una semana conseguir que un asociado confirmara que las restricciones de confianza medianas tenían la culpa. Terminé cambiando compañías de hosting como resultado.

0

En confianza media, al menos en mi host, las llamadas P/INVOKE no están disponibles, es decir, usar [DLLImport] para llamar a un componente COM no va a funcionar.

-Edoode

Cuestiones relacionadas