Recientemente he estado algo pillado con una incidencia de una instalación de MOSS 2007. Dicha Granja de MOSS tenía un servidor de Aplicaciones (para Index y Excel Services), y un par de Frontales Web, de los cuales uno actuaba como servidor de Búsquedas.
Descripción del Problema
El problema era que las búsquedas no estaban funcionando (sólo Dios sabe por qué y desde cuándo, dejémoslo estar). Tras mucho indagar, conseguí la siguiente información de diagnóstico, que quería detallar, por si a alguien más le ocurre lo mismo (o algo parecido), que pueda hacer matching y cazarlo/resolverlo lo más rápido posible, ya que al menos a mí, en esta ocasión, San Google no me sirvió de mucho (no pasa nada, tan sólo es una cuestión de echar horas). San Bing, tampoco.
Por un lado, al intentar acceder al Servicio Web SearchAdmin.asmx en el Frontal Web que actuaba como servidor de búsquedas o en el Index Server (es decir, al acceder a una URL del tipo http://servidor:56737/SearchAdmin.asmx), se producía un error acojonativo del tipo Server Application Unavailable, como se muestra en la siguiente pantalla capturada.
Pues empezamos bien. Al revisar en el Frontal Web que actuaba como servidor de búsqueda, en el Application Even Log, se mostraban multitud de errores (uno cada minuto) con Event ID 1088, relativos a ASP.NET, como se muestra en la siguiente pantalla capturada.
Al ver los detalles de estos errores con Event ID 1088 de Source ASP.NET 2.0, se podía observar un maravilloso Failed to execute request because the App-Domain could not be created. Error: 0x80070005 Access is denied. Ah claro, ahora está todo mucho más claro. Tela. Esto cada vez pinta mejor...
En este mismo servidor (el Frontal Web que actúa como Servidor de Búsqueda), al revisar el LOG del IIS, se podían observar errores de tipo 401.2, 401.2, y 500.
Si centramos nuestra atención en el Index Server, al revisar el Log de MOSS, se podían encontrar mensajes como el siguiente: Configuring the Search admin web service proxy Url to 'http://servidor:56737/SearchAdmin.asmx'. Y a esto, le seguía una parrafada como la siguiente:
There was a problem getting server 'SERVIDOR' ready for propagation: System.InvalidOperationException: Client found response content type of 'text/html; charset=utf-8', but expected 'text/xml'. The request failed with the error message: -- <?xml version="1.0" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Server Unavailable </title> </head> <body> <h1><span style="font-family:Verdana;color: #ff3300">Server Application Unavailable </span></h1> <p> <span style="font-family:Verdana;"> The web application you are attempting to access on this web server is currently unavailable. Please hit the "Refresh" button in your web browser to retry your request. </span></p> <p> <b>Administrator Note: </b> An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur. </p> </body> </html> --. at Microsoft.Office.Server.Search.Administration.SearchApi.RunOnServer[T](CodeToRun`1 remoteCode, CodeToRun`1 localCode, Boolean useCurrentSecurityContext, Int32 versionIn) at Microsoft.Office.Server.Search.Administration.SearchApi.ValidatePath(String location, Int64 minimumFreeDiskSpace) at Microsoft.Office.Server.Search.Administration.SearchSharedApplication.UpdateIndexLocations(SearchServiceInstance serviceInstance, String newIndexLocation) at Microsoft.Office.Server.Search.Administration.SearchServiceInstance. SynchronizePropagationTopologyOnIndexer(SearchSharedApplication application)
Al revisar el Application Event Log del Index Server, se podían encontrar multitud de eventos con Event ID 6482 de origen Office SharePoint Server, como se muestra en la siguiente pantalla capturada.
Al mostrar estos errores 6482 en detalle, se podía observar un mensaje de error similar al siguiente, en el que indica que no se ha podido realizar la propagación del índice de MOSS, y vuelve a hacer referencia al bonito mensaje de Server Application Unavailable.
Descripción de la Solución
Tras muchas pruebas, decidí revisar la configuración de la identidad utilizada por el Pool de Aplicaciones del Sitio de IIS utilizado para hospedar los Servicios Web de MOSS. En los tres servidores de la Granja estaba configurado con Network Service, tal y como se muestra en la siguiente pantalla capturada, aunque tan sólo funcionaba en uno sólo de los tres servidores MOSS.
Había que hacer algo, y decidí cambiar el Application Pool utilizado por el Sitio de MOSS utilizado por los Web Services, configurándolo para utilizar el mismo Application Pool utilizado por los Servicios Compartidos, el cual, sí que se estaba ejecutando bajo la identidad de una cuenta de servicio (quiero decir, un usuario de Directorio Activo, en lugar de una cuenta integrada como Network Service).
Y voalá. Tras este cambio, la invocación al Servicio Web SearchAdmin.asmx, empezó a funcionar OK de nuevo. Yeah.
Poco más por hoy. Como siempre, confío que la lectura resulte de interés.