Pregunta

He configurado un control activex para que se ejecute en una página web. El servidor puede servir esta página web para sí mismo, pero otras máquinas en la intranet e internet no pueden acceder a ella.

La configuración de Caspol se ve así:

Grupos de códigos:

1.  All code: FullTrust
   1.1.  Zone - MyComputer: FullTrust
      1.1.1.  StrongName - (omitted) : FullTrust
      1.1.2.  StrongName - 00000000000000000400000000000000: FullTrust
   1.2.  Zone - Intranet: FullTrust
      1.2.1.  All code: Same site Web
      1.2.2.  All code: Same directory FileIO - 'Read, PathDiscovery'
   1.3.  Zone - Internet: Internet
      1.3.1.  All code: Same site Web
   1.4.  Zone - Untrusted: Nothing
   1.5.  Zone - Trusted: Internet
      1.5.1.  All code: Same site Web
   1.6.  Url - http://MYSERVERNAME/APPLICATIONNAME/*: FullTrust
Success

La aplicación a la que intento acceder es el grupo 1.6. ¿Estoy haciendo algo mal aquí?

[Editar] Vale la pena mencionar que el registro de errores de IEDebug en una máquina que intenta acceder al control desde la intranet muestra una larga excepción. Lo más notable de esto es:

System.Net.WebPermission
The first permission that failed was:
<IPermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
version="1">
¿Fue útil?

Solución

Hace mucho tiempo leí en alguna parte que para los controles de usuario de .Net, la evidencia de URL no funciona. Solo el sitio y la zona funcionan.

caspol -machine -quiet -addgroup Trusted_Zone -site mysite.com FullTrust -name mysite -description "Code group granting trust to code from mysite.com"

Puede hacer esto para cada zona.

Cuando use IE8, asegúrese de que mysite.com esté agregado a la lista de Sitios de confianza 3 . No estoy seguro de si el Modo protegido debe estar desactivado.

Cuando estás en un sistema de 64 bits, hay dos caspol's, con permisos separados:

  • C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ caspol.exe
  • C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ caspol.exe

Pasé mucho tiempo configurando permisos en la caspol de 32 bits y luego golpeándome la cabeza contra la pared porque no funcionaba. Resulta que utilicé IE8 de 64 bits porque eso hizo un IEDebug.log. Lo mejor es establecer los permisos en ambas versiones.

Otros consejos

Como resultado, este no fue un problema de confianza en absoluto. Una DLL que se requería para que la aplicación se ejecutara no estaba en el directorio bin de la aplicación. En consecuencia, la aplicación intentaba extraer la DLL requerida del GAC, lo cual no era correcto. La implementación con la DLL requerida solucionó el problema.

Como nota al margen: este es un mecanismo de entrega muy anticuado para el software y esperamos que ya no se use. La depuración de este tipo de errores es mucho más difícil de lo que debería ser. Recomendamos elegir un mejor mecanismo de entrega que los controles integrados.

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