Pregunta

Tengo una instalación de Windows web 2008 x64 ejecutándose.

Debido al requisito de que la aplicación tenga la capacidad de importar archivos de Excel, tuve que cambiar la aplicación web para que se ejecute en modo de 32 bits. Las bibliotecas MSAccess / Excel no están disponibles en x64.

También tuve que aplicar la aplicación para ejecutar en trust = Full. Anteriormente estaba bajo nivel = medio.

¿Hay una buena solución a este problema? Quiero reducir el nivel de confianza y no tener que comprometer la aplicación a 32 bits solo porque una pantalla requiere importación de Excel (el uso de esta pantalla tampoco es frecuente)

¿Es posible configurar una carpeta / página en particular para usar 32 bits en la aplicación, y el resto como x64? No creo que puedas. Y lo mismo para el nivel de confianza. ¿Es específica la aplicación de nivel de confianza o puedo enviarla en una carpeta anidada?

¿Fue útil?

Solución

Como FoxFire señala correctamente , usted no puede mezclar código de 32 bits y 64 bits en el mismo proceso.

Cualquier aplicación ASP.NET que necesite interactuar con Office requerirá niveles de confianza elevados.

Hay una forma de evitar esto utilizando una técnica conocida como 'sandboxing'.

Lo que debe hacer es escribir un ensamblaje de envoltura que haga el trabajo que necesita hacer con Excel. Marque el ensamblaje con el atributo [ensamblaje: AllowPartiallyTrustedCallers] , fírmelo y luego impleméntelo en el GAC.

Cualquier clase en este ensamblado que se requiera para comunicarse con los componentes de interoperabilidad de Office se debe atribuir con [PermissionSet (SecurityAction.Assert, Unrestricted = true)] o cualquier demanda requerida.

Esto le permitirá reducir el nivel de confianza en su servidor pero aún usar los componentes de Office.

Esto se basa en la suposición de que tiene acceso administrativo al servidor para poder colocar el ensamblaje de la caja de arena 'confiable' en el GAC.

Otros consejos

Dentro del mismo proceso, nunca puede haber mezclado 32 bits y 64 bits. Tal vez podría escribir una segunda aplicación que haga las cosas de Excel por usted y luego compilarla en un ejecutable de 32 bits. Luego puede llamar (ejecutar el archivo con algunos parámetros) a ese ejecutable desde su aplicación web (aún requerirá plena confianza, pero podría ejecutar 64 bits en ese momento).

Editar: no es necesario tener plena confianza necesariamente. También puede crear un nivel de confianza personalizado. Pero el punto es que no se ejecutará en el nivel de confianza web estándar.

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