Pregunta

Debo decir que hasta ahora, probablemente he tenido mucha suerte en que nunca me he encontrado con los problemas asociados con un sitio web que se ejecuta con confianza media. Solo desarrollé aplicaciones de intranet o utilicé una empresa de hosting que funciona con plena confianza. Pero el host que me pidieron usar para un proyecto reciente se ejecuta con una confianza media, así que estoy tratando de que mi aplicación ejecute esto. Un par de preguntas: desarrollo en Windows XP. ¿Se puede configurar IIS allí para una confianza media (más fácil de depurar) y / o es una configuración web.config? Hay una gran cantidad de información sobre este tema y la curva de aprendizaje es empinada.

En segundo lugar, después de mucho manipular y eliminar código, creo que esta línea está causando un error de permisos:

Para cada FieldInfo como FieldInfo en Type.GetFields (BindingFlags.Instance or BindingFlags.NonPublic Or BindingFlags.Public)

¿Alguien puede aclarar que este es un posible candidato, especialmente? esa bandera no pública? Esta es la copia & Amp; código pegado (Coding Horror resaltó el riesgo de esto), así que nunca he pensado realmente en ello. Supongo que el bucle es a través de cada campo en el objeto tanto público como no público, y he leído que los campos protegidos están prohibidos con la reflexión sobre la confianza media.

Saludos, Rob.

¿Fue útil?

Solución

Lo sentimos, Reflection with NonPublic es equivalente a plena confianza.

Si de alguna manera no tuviera plena confianza pero tuviera una reflexión no pública, podría aprovechar eso para cambiar mi propio nivel de confianza de código (cadenas de escritura, etc.).

Otros consejos

Sí, un sitio web en XP se puede configurar para ejecutarse en confianza media:

En el < system.web > sección agregue lo siguiente:

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

Y tú estás allí.

Lo que bien puede encontrar es que la mayoría de los hosts ejecutan sus sitios en un " Medium " configuración de confianza, con algunos derechos adicionales más allá de los predeterminados: sus técnicos deberían poder decirle qué diferencias tienen si las hay.

Si echas un vistazo en:

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

verá la configuración predeterminada que se aplica.

La reflexión es una de las cosas clave que está limitada en la confianza media - de las Observaciones en página GetFields :

  

Si el campo solicitado no es público y la persona que llama no tiene ReflectionPermission para reflejar objetos no públicos fuera del ensamblaje actual, este método devuelve una referencia nula (Nothing en Visual Basic).

Como esto tiene el potencial de devolver un valor nulo, probablemente debería estar comprobando si es nulo antes de comenzar a recorrerlo, o comprobando que FieldInfo no es nulo / nada antes de usarlo.

Voy a marcar esto como cerrado ya que nadie ha respondido y también estaba resultando demasiado problemático para intentar volver a codificar. El programa no está mal escrito, pero utiliza mucho la reflexión para el mapeo de objetos y, para ser honesto, es más fácil encontrar una empresa de alojamiento que admita plena confianza.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top