El ensamblaje de .NET se ejecuta en confianza parcial en una unidad de red, pero todos los demás en plena confianza

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

Pregunta

Tenemos un problema extraño con nuestra solución C ++ (que llama a los ensamblados .NET 4.0) cuando se ejecutan en una unidad de red. La solución aloja varios servicios de WCF con NETTCPBinding, uno de ellos con una configuración de enlace no predeterminada. Una no defensa nettcpbinding per se no es posible bajo fideicomiso parcial (ver pregunta de desbordamiento de pila ¿Cuándo necesita WCF NettCPBinding de confianza completa en el cliente?), pero la solución se ejecuta en una unidad de red totalmente confiable. Esto funciona en varias computadoras diferentes (Windows Vista y Windows 7), pero falla en una (Windows Vista) con el lanzamiento de una excepción,

Se produjo un error creando el controlador de la sección de configuración para "System.ServiceModel/Bindings": Ese ensamblaje no permite que las llamadas parcialmente confiables. (K: syuspath testing.exe.config línea 6)

Esta excepción estaría totalmente bien, si la solución se ejecutara bajo confianza parcial en esa computadora, pero se ejecuta bajo plena confianza. Incluso si comprobo la confianza total en el código, es cierto.

Verificamos dos veces las opciones de Internet con una de las computadoras en las que funciona, sin diferencias.

Todos los archivos DLL y el archivo EXE son fuertes con nombre.

Actualizar:La unidad de red está en plena confianza en la computadora en particular (caspol.exe).

¿Que debemos buscar?

Si necesita información adicional, hágamelo saber.

Actualización 2:Todavía tenemos ese problema y ahora incluso en una computadora más (Windows 7). Entonces parece ser independiente del sistema operativo.

¿Fue útil?

Solución 2

No encontramos una solución aquí, pero una solución: no use la App.Config para la configuración de enlace. Configurarlos en código funciona para nosotros en el mismo entorno.

Este La pregunta por cierto parece manejar un problema similar. Hth

Otros consejos

Se llama Seguridad de acceso al código (CAS), y obliga a todas las unidades de red no confiables a ser tratadas como código de red no confiable.

El código local tiene plena confianza, el código de red tiene confianza parcial y el código de Internet no tiene confianza. Es un modelo de seguridad solo .NET. Sus opciones son designar la unidad de red como una unidad 'confiable' dándole todos los derechos (busque caspol.exe Full Trust Network Drive) o para copiar el archivo EXE en una unidad local.

Uso de Caspol para confiar plenamente en una red compartida de la red debería ayudarte.

O en la línea de comando:

CasPol.exe -m -pp off -ag 1.2 -url file://///server/share/* FullTrust .

Haga clic derecho en App.Config -> Propiedades -> Desbloqueo

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