Sei sulla pagina 1di 21

Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento...

En el proyecto en el que me encuentro, tenemos desarrollada una librera .NET para obtener informes en Excel mediante la llamada a una BAPI de SAP. Esta librera trabaja con el objeto COM de Excel y al mismo tiempo es consumida desde ASP.NET, s, ya se que Microsoft no recomienda el uso de componentes Office en aplicaciones ASP.NET, "COM Interop with Microsoft Office products from an ASP.NET web page. Excel was not designed to be used inthis way" pero esto es un caso de fuerza mayor y no hay mas narices, puesto que son informes bastantes complejos que no basta con utilizar un DataGrid y rendereizar su contenido y lanzar una salida con Response.Write y poner el Response.ContentType = "application/vnd.ms-excel, como tantos ejemplos hay por ah. El problema con el que me he encontrado es el siguiente: Todas las pruebas realizadas han funcionado a la perfeccin en las mquinas de desarrollo (Eso de ser Administrador de mquina...) pero... cuando lo he montado en el servidor de pruebas y he hecho la primera peticin de un informe me he encontrado con esto: Acceso Denegado Juer, pues si que empezamos bien. La primera conclusin es evidente: Falta de Permisos, as que le he arrancado el Debugger de mi mquina y le he pedido a mi compaero que hiciera una peticin de informe para ver donde casca: ApplicationClass objExcel = new ApplicationClass(); Le he dado permisos de Administrador a mi compaero en mi mquina, ha vuelto a ejecutar la peticin y Vual! todo funciona, porque estas llamadas a objetos COM necesitan para ejecucin local/remota unos privilegios mnimos. La configuracin del sitio web tiene el acceso annimo deshabilitado y la autenticacin windows integrada (Estamos en una intranet) y en el Web.Config impersonate a true con autenticacin Windows. Soluciones que no piensas:

Dar permisos de Adminsitrador a la cuenta MACHINE\ASPNET

ESTO NI SE TE OCURRA

Impersonar el hilo de ejecucin de la aplicacin con un usuario Adminsitrador

La gente de sistemas nunca te lo dar y adems no me parece una buena solucin puesto que vulnera muchos principios de seguridad como en el primer caso.

Hacer una impersonacin slo cuando generas el Informe con una cuenta de usuario que sea Adminsitrador

La gente de sistemas nunca te lo dar Bueno, pues visto que esto va a ser que no, de repente, cacharreando con los Servicios de Componentes encuentro una cosita que se llama Configuracin DCOM (Distributted Component Object Model) y al expandirlo me encuanto con esto:

S!!!! Aplicacin Microsoft Excel, esto pinta bien y adems tiene propiedades, as que pinchamos:

Juer y encima tiene una pestaa de Seguridad

As que marcamos el check Personalizar de los Permisos de inicio y activacin y pulsamos el botn Modificar para dar permisos al Usuario/Grupo que desamos:

Aceptamos todo y con esto hemos resuelto el maldito error. En mi caso hemos dados permisos a un Grupo que contiene a los usuarios que acceden a la aplicacin. (Aunque la imagen corresponde al equipo mio de casa ;)) Por ltimo y por cuestiones de performance en nuestra aplicacin es necesario liberar todos los objetos COM que utilicemos, para que no se queden esos malditos procesos llamados EXCEL (Os lo digo por experiencia propia), que aperecen a porrillo en el Administrador de Tareas, y para ello os dejo este enlace del Support de Microsoft: La aplicacin de Office no se cierra despus de automatizacin desde cliente de Visual Studio . NET Con la solucin que propone consegu eliminar eso malditos procesos que parecan desaparecer con el oApp.Quit(); oApp = null; pero que en realidad no desaparecan y se estaban acumulando llevandose 36 Mb de memoria cada uno. Bueno pues espero que os sirva y que no tengis que romperos tanto el coco y os encontris tantos probelmas como me he encontrado yo. Published 15/3/2007 20:56 por Luis Ruiz Pavn Archivado en: ASP.NET,ASP.NET 2.0,Excel,Office,COM Comparte este post:
5 value:Archivado%

http://geeks.ms/blogs/lruiz/archive/2007/03/15/como-utilizar-com-interop-office-excelen-tus-proyectos-asp-net-y-no-morir-en-el-intento.aspx

Comentarios
# re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Excelente artculo... que recuerdos ver pantallazos del dcomcnfg.exe a estas alturas de la vida con .Net 3.0 rulando por ah... DCOM forever!! Thursday, March 15, 2007 9:28 PM por Rodrigo Corral # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... jejeje 36Mb de memoria cada uno = una instancia de Excel ... el gran problema de la interfaz com q exporta excel es q e no es un com, es un activex exe !!! (el RCW se vuelve loco) Y pensar que hace unos aos una herramienta conocida de reporting "incluia" las capacidades de reporting de excel y word. Yo me quede flipado y cuando comence a hacer una reverse engineering para ver q hacian, como bien tu dices desp del oApp.Quit(), llamaban a un servicio externo q se recorria todos los procesos existentes y se calzaba a los exceles ... curioso no ? Saludos Friday, March 16, 2007 3:56 PM por El Bruno # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Gracias por el aporte Bruno, desconoca que se tratase de un ActiveX. Y como en el enlace que he puesto al support, no dejes de liberar ninguno o el proceso se queda. Salu2 Saturday, March 17, 2007 9:56 AM por Luis Ruiz Pavn # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Es verdad que MS no recomienda el uso de excel en el server side pero tambin lo tacha de ilegal, pues si, si algn da la gente esta de software association llega con la Polica a tus oficinas y ven que estas haciendo esta atrocidad no solo te golpearan por mal programador sino que tambin te secuestraran tus servidores. Para prevenir esto MS

creo el famoso excel services que corre en SharePoint o tambin puedes usar ASPOSE que son componentes .net creados para este fin. NUNCA implementen una aplicacion de este tipo Sunday, March 18, 2007 10:36 PM por Alberto Acosta # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Ante una aclaracin de este tipo por tu parte, creo que aparte de llamarme Mal Programador deberas argumentar tu crtica para saber porqu es ilegal. Yo por mi parte, te dejo un documento donde advierten que no recomienda el uso para server-side pero en ningn momento dicen nada sobre "Malos Programadores", "Golpes", "Polica"... es ms como dije al principio ha sido un requerimiento especial y no ha habido mas cojo... aunque claramente digo que Microsoft no lo recomienda: Considerations for server-side Automation of Office http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757 Salu2 Monday, March 19, 2007 10:01 AM por Luis Ruiz Pavn # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Muy buen articulo. Tuesday, March 20, 2007 4:06 PM por Sergio # Modificando documentos Office 2007 con .Net Buenas mientras descanso en las minivacaciones de semana santa completamente desenchufado y con un par Saturday, April 07, 2007 7:54 PM por El Bruno # Modificando documentos Office 2007 con .Net Buenas mientras descanso en las minivacaciones de semana santa completamente desenchufado y con un par Saturday, April 07, 2007 7:54 PM por El Bruno # Modificando documentos Office 2007 con .Net

Buenas mientras descanso en las minivacaciones de semana santa completamente desenchufado y con un par Saturday, April 07, 2007 7:55 PM por El Bruno # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Hola Tu articulo esta muy interesante y funciona bien, ahora yo tengo ese problema pero con word :( y no hay un application Word en el adm de componentes alguna vez hiciste con word?? si lo hiciste a quien hay que dar permisos ?? salu2 sergio Monday, June 04, 2007 10:59 PM por SergioT # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... otra vez yo, como una alternativa para no utilizar el excel est utilizar el ado.net directamente para escribir el excel, tengo un pequeo ejemplo si lo quieren ver en mi blog, que por cierto estoy recien comenzando :) http://sergiotardio.blogspot.com/2007/05/excel-y-adonet.html salu2 sergio Monday, June 04, 2007 11:11 PM por SergioT # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Mira a ver si te sirve el DCOM -> Documento de Microsoft Word. Como alternativa a utilizar COM de Excel te recomiendo ASPOSE. Salu2 Monday, June 11, 2007 3:15 PM por Luis Ruiz Pavn # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento...

Hola Por lo que le esta bastante interesante e ASPOSE lo unico malo es que no es gratis :) Te cuento que estoy utulizando ado.net para cargar una planilla desde un datatable, pero he notado que para cargar miles de registros, uno a uno se pone lento, mas de lo que quisiera, y me preguntaba si no conoces alguna forma de llenar todo un datatable direco a un excel , pero de preferencia con ado.net sin componentes que comprar :) Por otro lado he dejado de utilizar el word y estoy utilizando archivos RTF de forma que los abro y hago la manipulacion del stream, no me salio tan dificil, y funciona bien no mas. Lo que yo necesitaba era cartas y sobres tipo que luego se deben combinar con N registros. Lo unico que no me gusta es la manipulacion de los codigos de rtf es un poco lioso y puede ser suceptible a errores. Salu2 SergioT Monday, June 11, 2007 5:07 PM por SergioT # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Miar estos artculos: http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art05.asp http://support.microsoft.com/kb/311731/es http://www.netveloper.com/contenido2.aspx?IDC=288_0 Salu2 Friday, June 22, 2007 1:56 PM por Luis Ruiz Pavn # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... HOla. El articulo me parece muy interesante pero cuando ingreso al MTC no aparece la carpeta Configuracin DCOM y no puedo asignarles permisos, y cuando entro jecutando dcomcnfg si me aparece el EXCEL, pero no me permite ingresar a las pestaas de configuracin. Hay alguna manera de restaurar la carpeta de configuracin DCOM , tengo un windows 200 como servidor Monday, July 02, 2007 5:41 PM por CoriSoledad

# re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Excelente y dejame derte que no es de las soliciones que se le ocurre a cualquiera, me fue de mucha utilidad. Friday, July 06, 2007 11:21 PM por ever.torres # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Gracias compaero!!! Ese tipo de comentarios le dan ms ganas a uno de seguir escribiendo ;) Salu2 Tuesday, July 10, 2007 2:22 PM por Luis Ruiz Pavn # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... "...Excel was not designed to be used inthis way" ni en "another way" jeje. A ver si alguien ha pasado por esto.. El interop, al cargar los datos de un archivo excel en un datagrid es lento de narices, xo si adems quieres mostrar el formato...ya te mueres. Existe alguna forma que yo no conozca? o alguna forma de incrustar la tabla excel con formato y todo en un formulario? Tuesday, July 17, 2007 8:46 PM por jajavi # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Como alternativa a utilizar COM de Excel te recomiendo ASPOSE es la leche y aunque es de pago merece la pena, puedes verlo en: www.aspose.com/.../Default.aspx Salu2 Friday, July 27, 2007 10:21 AM por Luis Ruiz Pavn # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Que bien amigo, eso era lo que buscaba, gracias, Calif. 10. =) Friday, October 19, 2007 1:40 AM por JORGE

# re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Hola, una dudota, esto mismo que se explica en este articulo aplica para word?, porque tengo una aplicacin que usa word y en mi maquina funciona, pero como se menciona en el articulo, pues la gente de sistemas no me va a dar un usuario administrador, y con el que me dieron me marca un error al momento de generar el archivo de word "Word cannot open the existing", alguien podria ayudarme con esto. Thursday, December 27, 2007 1:54 AM por jose # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Has mirado con dcomcnfg.exe si hay un DCOM para Word? Salu2 Thursday, December 27, 2007 10:23 AM por Luis Ruiz Pavn # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Hola Luis, gracias por contestar, pues ya cheque el dcomcnfg y ahi esta ademas de excel tambien el word, e intente hacer algo similar a lo que esta en el articulo pero no he tenido exito, me marca algunos errores como que no tiene suficiente memoria o que el tiempo de espera termino, en fin no he tenido exito. Alguna idea de lo que puede estar pasando? Thursday, December 27, 2007 7:04 PM por jose # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Hola. Buscando soluciones a este error me he encontrado con esta. Pero mi situacion particular es con Word. Pretendo instanciar una aplicacion word de la siguiente manera: Dim oWordApp As New Microsoft.Office.Interop.Word.Application y me genera el error: Error al recuperar un generador de clases COM para el componente con CLSID {000209FF-0000-0000-C000-000000000046} debido al siguiente error: 80070005. He estado probando las soluciones para excel pero nada. No s a qu puede ser debido y la solucin posible. Alguien tiene alguna propuesta?? Tuesday, April 15, 2008 2:19 PM por jjsantos

# re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Hola me parece muy interesante todo lo que han mencionado. Por mi cuenta ya pase por el problema de los permisos para utilizar los COM de excel pero ahora me surge un nuevo problema al publicar dicha aplicacion en un servidor Win 2000 que tiene Excel 2000. El error es el siguiente: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.: at Microsoft.Office.Interop.Excel.Workbooks.Open(String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, Object IgnoreReadOnlyRecommended, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad) En algun lado encontre que no es posible utilizar estos componentes con Excel 2000 lo cual no me convence. Cualquier ayuda que me puedan dar ser mas que bienvenida gracias... Tuesday, July 29, 2008 4:02 PM por Bruno # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Queria consultarlos porque hice una aplicacion que levanta un excel del lado del servidor, a pesar de no estar aconsejado.....y me encontre que al querer levantar mas de una instancia me da un error de concurrencia.......Alguien tiene alguna data de porque puede suceder algo asi???? gracias! Diego Thursday, August 07, 2008 6:45 PM por Diego # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Me salvaste la vida mi pana, excelente articulo y muy bien explicado!!! Tuesday, October 14, 2008 5:43 PM por Freddy Chirinos # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Exactamente lo q estaba buscando Thursday, January 22, 2009 3:07 PM por nano # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento...

Muy bueno el artculo, me ayud a avanzar un poco. Ahora ya me deja ejecutar el cdigo pero al hacerlo se abre una instancia del WINWORD.exe pero se queda en el taskmgr sin hacer nada y en la aplicacin web da un tiemout. Alguien sabe la causa y como resolvrlo? Tuesday, July 07, 2009 1:21 PM por Aitor # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Sres Agradeceria que me puedan ayudar urgentemente, al inicio tuve un problema de acceso denegado para crear un objeto de tipo excel, luego aadi la cuenta con la que estoy trabajando al DCOM, le di todos los permisos (ojo q la cuenta no es administrador). Despues de esto ejecuto la primera linea q muestro acontinuacion sin problemas,pero en la tercera linea mi aplicativo se cae, al querer abrir una hoja excel para trabajar. Sale error 1004 - No se puede abrir o guardar ms documentos debido a que el espacio en disco o la memoria son insuficientes. Para disponer de ms memoria cierre los libros o programas que no necesite. Para liberar espacio en el disco, elimine los archivos que no necesita del disco en el que desea guardar los documentos. Set lobjExcel=CreateObject("Excel.Application") lobjExcel.Application.Visible=True Set lxlsWorkbook=lobjExcel.Workbooks.Add Verifique si tenia objetos excel abierto en el task manager pero no encontre ninguno.ademas tengo suficiente espacio en disco. que puedo hacer? Tuesday, July 21, 2009 4:43 PM por Joanna # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Nadie ha dado con el problema de : 1004 - No se puede abrir o guardar ms documentos debido a que el espacio en disco o la memoria son insuficientes. Para disponer de ms memoria cierre los libros o programas que no necesite. Para liberar espacio en el disco, elimine los archivos que no necesita del disco en el que desea guardar los documentos. He buscado y buscado informacin y nada...

Parece que muchos se rindieron y quienes lo lograron no lo publicaron :( Monday, November 02, 2009 8:03 PM por hellokytty # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Hola a mi me marca el siguiente error: Error Object reference not set to an instance of an object. Aun cuando ya tengo instalado Office en el Servidor. Yo se que no recomiendan la automatizacion de Office de lado del servidor pero en mi caso es una necesidad y no tenemos otra alternativa Tuesday, February 02, 2010 5:42 PM por Agus # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... hola...hice todo pero no me muestra el archivo de excel que creo....se crean procesos de excel.exe en el servidor, pero no me muestra el archivo! en la pc de desarrollo anda lo mas bien, pero en el server no! AYUDA! Tuesday, April 13, 2010 10:19 PM por Ale # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Hola, yo tengo un pequeo detalle cuando le doy clic al boton para que me de el reporte en excel no hace nada ni me marca error :S que puedo hacer... Saludos Saturday, August 28, 2010 12:25 AM por PalomaBtz # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Hola ya he podido pero tengo un inconveniente, el documento se abre en el servidor de aplicaciones(Servidor web) y no en el ordenador desde donde lo ejecuto..que debo hacer??? Wednesday, October 13, 2010 4:25 PM por camilo # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Sabes, quiero abrir un libro de excel con parametros enviados desde una grilla.

Dim xlApp As Object 'Un Libro de Excel Dim xlBook As Excel.Workbook ' Una hoja del libro Dim xlSheet As Excel.Worksheet 'Inicializar Excel y obtener un objeto de Aplicacion Dim ruta_excel As String ruta_excel = Server.MapPath("/" & "plantilla_nomina_EAC.xlt") xlApp = Nothing xlApp = CreateObject("Excel.Application") xlBook = Nothing xlBook = xlApp.Workbooks.Open(ruta_excel) xlSheet = xlBook.Worksheets(1) xlApp.Visible = True Cuando se ejecuta este codigo me arroja el siguiente error: NO SE PUEDE MOSTRAR UN CUADRO DE DIALOG O FORMULARIO MODAL CUALDO LA APLICACION NO ESTA EN MODO INTERACTIVE. ESPECIFIQUE ESTILO SERVICENOTIFICACION O DEFAULT DESKTOPONLY PARA MOSTRAR UNA NOTIFICACION DE UNA APLICAICON DE SERVICIO. QUE PODRA SER?? Saturday, November 13, 2010 8:32 PM por Natalia # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Bueno yo he realizado los pasos descrito pero mi aplicacin me sigue mandando el mismo error al tratar de mostrar los datos en ecxel desde una mquina cliente (No se puede crear el componente ActiveX). Desde mi mquina si de desarrollo funciona perfectamente. Monday, January 17, 2011 3:40 PM por Ramn # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Ramn: Bueno yo he realizado los pasos descrito pero mi aplicacin me sigue mandando el mismo error al tratar de mostrar los datos en Excel desde una mquina cliente (No se puede crear el componente ActiveX). Desde mi mquina de desarrollo

funciona perfectamente. Alguien tiene otra solucin o me falta algo por incluir en el servidor o en mi aplicacin para que funcione, gracias de antemano. Monday, January 17, 2011 4:57 PM por Ramon Romero # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Hola. Sabes que tengo el mismo problema, pero con outlook 2003 y VS2005(estoy atrasada lo se, pero mi empresa no entiende esa parte), y he mirado en el DCOMCNFG pero no existe nada aparte de algo para los datos adjuntos de Outlook y otro para el buscador de outlook. En modo debug funciona sin problemas, pero al instalarlo(como servicio windows) me envia el error mencionado. Este error es tanto en la mquina cliente como en el servidor. Help me please!!!! Friday, February 18, 2011 4:44 PM por Johanna # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Primero creo los objetos Dim xlWorkBook As Excel.Workbook Dim xlWorkSheet As Ecel.Worksheet Me sale esto cuando hago la asignacion de memoria xlWorkBook = New Excel.Application().Workbooks.Add(Missing.Value) {System.UnauthorizedAccessException} System.Exception Ya hice lo q pones arriba y nada... revise el web.config y esta en mode Windows... alguna ayuda sera agradecida :D Saturday, March 12, 2011 4:11 PM por Pachango # re: Como utilizar COM Interop Office (Excel) en tus proyectos ASP.NET y no morir en el intento... Demasiado bueno el articulo no saba que era exactamente hasta que le esto :D muchisimas gracias jaja y lo mejor que me ayudo en el trabajo :) Friday, September 02, 2011 6:11 PM por totobycrg

Configuracin IIS y DCOM para importar / exportar a MSExcel mediante Interop


SEP 11 Publicado por Wec Vaya un ttulo ms largo para empezar a publicar. Este es un problema que me rond por la cabeza durante aproximadamente una semana. Empezamos. - Problema: He desarrollado una aplicacin ASP.NET mediante el Visual Studio 2008 en la que una de sus funcionalidades necesita tanto leer datos de un fichero MS Excel existente en el PC del usuario como tambin generar un fichero de MS Excel donde poner un informe. El problema surge cuando he pasado del servidor de desarrollo (Windows XP Service Pack 3), donde todo funcionaba de maravilla, al servidor de produccin (Windows Server 2003). Como era de esperar, la aplicacin no ha funcionado a la primera, sino que al importar/exportar a MS Excel el servidor reporta el siguiente error: Retrieving the COM class factory for component with CLSID {01ABF73C -70D3-4992-8FD10FB158EB0253} failed due to the following error: 800703e6 - Investigacin: Como me tema, era problema de configurar adecuadamente los permisos de acceso tanto en el IIS como en el DCOM. En Windows Server 2003, al contrario de XP, el usuario que inicia los procesos del IIS no es el usuario ASP.NET, sino que es configurable por el administrador, siendo por defecto el NETWORKSERVICE (Servicio de Red):

Por motivos de confidencialidad, no muestro el nombre del servidor de explotacin

Al ser este usuario el encargado de iniciar los procesos que hacen posible que el DCOM genere una Excel Application hay que asignarle los permisos necesarios. Otra posible solucin es

impersonar el usuario, pero la descart por representar un riesgo en la seguridad demasiado importante. - Solucin: Con el fin de solucionar el problema, he realizado dos acciones: 1) Asignar permisos al usuario NETWORK SERVICE en las diferentes carpetas donde est ubicada la aplicacin ASP.NET. Para ello: Botn derecho en las carpetas; Propiedades; Seguridad; Aadir los permisos necesarios (si el usuario NETWORK SERVICE no est en la lista, aadirlo). 2) Configurar el DCOM para que el usuario NETWORK SERVICE sea capaz de iniciar el servicio COM y as puedan ejecutarse las funciones de la librera Interop. Para ello, primero abrimos la ventana del Servicio de Componentes de Windows Server 2003.

A continuacin expandimos la carpeta Configuracin DCOM, seleccionamos el servicio Microsoft Excel Application y accedemos a sus propiedades:

Excel Application

Seleccionamos la pestaa Seguridad y pulsamos Modificar en los Permisos de inicio y activacin:

Modificar los permisos de inicio y activacin

Por ltimo, aadimos los permisos al usuario NETWORK SERVICE (si no existe el usuario, lo aadimos mediante el botn Agregar):

Permisos necesarios

Una vez asignados los permisos, reiniciamos el servidor en el IIS y listo, a disfrutar de la aplicacin. -Conclusiones: La utilizacin de la librera COM Interop no es una solucin viable en el diseo e implementacin de aplicaciones ASP.NET (Microsoft confirma en su web que no ofrece soporte por su inestabilidad). As pues, NUNCA usar Interop en aplicaciones ASP.NET . Como alternativa (yo tena impuesto el desarrollo mediante Interop), el desarrollador actual (VS 2008 con Office 2007) puede usar Microsoft Office XML 2003 (http://www.dotnetpanama.com/dotnetpanama/blog/post/2009/06/30/Como-crear-Excelusando-Microsoft-Office-XML-2003.aspx), la PIA the Office 2007 (http://www.microsoft.com/downloads/details.aspx?FamilyID=59daebaa-bed4-4282-a28cb864d8bfa513&displaylang=en), o simplemente ADO.NET (http://support.microsoft.com/kb/316934/es). Cualquier problema que os surja, duda, puntualizacin o comentario no dudis en escribir!
About these ads

Potrebbero piacerti anche