.net - net - publicar web service en iis




Problema al implementar la aplicaciĆ³n ADO.Net Data Service en IIS (2)

Estoy agregando una función de búsqueda del servicio de datos ADO.Net a una página web existente. Todo funciona bien cuando se ejecuta desde Visual Studio, pero cuando lo extiendo a IIS, aparece el siguiente error:

Solicitud de error
El servidor encontró un error al procesar la solicitud. Vea los registros del servidor para más detalles.

Lo consigo incluso cuando intento mostrar la página predeterminada, es decir:

http: //server/FFLookup.svc

Tengo 3.5 SP1 instalado en el servidor.

¿Qué me estoy perdiendo ya qué "Registros del servidor" se está refiriendo? No puedo encontrar ningún mensaje de error adicional.

No hay nada en los registros del Visor de eventos (Sistema o Aplicación) ni nada en los registros de IIS que no sea el GET:

2008-09-10 15:20:19 10.7.131.71 GET /FFLookup.svc - 8082 - 10.7.131.86 Mozilla / 5.0 + (Windows; + U; + Windows + NT + 5.1; + en-US) + AppleWebKit / 525.13 + (KHTML, + como + Gecko) + Chrome / 0.2.149.29 + Safari / 525.13 401 2 2148074254

No hay ningún rastro de pila devuelto. La única respuesta que recibo es el "Error de solicitud" como se indicó anteriormente.

Gracias

Patricio


Bueno, encontré los "Registros del servidor" mencionados en el error anterior.

Debe activar el seguimiento en el archivo web.config agregando las siguientes etiquetas:

    <system.diagnostics>
      <sources>
        <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing" >
            <listeners>
                <add name="ServiceModelTraceListener"/>
            </listeners>
        </source>

        <source name="System.ServiceModel" switchValue="Verbose,ActivityTracing"        >
            <listeners>
                <add name="ServiceModelTraceListener"/>
            </listeners>
        </source>
        <source name="System.Runtime.Serialization" switchValue="Verbose,ActivityTracing">
            <listeners>
                <add name="ServiceModelTraceListener"/>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add initializeData="App_tracelog.svclog"   
                        type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                        name="ServiceModelTraceListener" traceOutputOptions="Timestamp"/>
    </sharedListeners>
</system.diagnostics>

Esto creará un archivo llamado app_tracelog.svclog en el directorio de su sitio web.

A continuación, utiliza la utilidad SvcTraceViewer.exe para ver este archivo. El espectador hace un buen trabajo al resaltar los errores (junto con mucha otra información sobre las comunicaciones).

Cuidado: el archivo de registro creado con los parámetros anteriores crece muy rápido. ¡Solo enciéndalo durante la depuración!

En este caso particular, el problema terminó siendo la versión incorrecta de OraDirect.Net, nuestro Oracle Data Provider. La versión que estábamos usando no era compatible con 3.5 SP1.


Para mostrar de forma detallada los errores resultantes de su servicio de datos, puede colocar la siguiente etiqueta encima de su definición del servicio de datos:

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]  

Esto mostrará el error en la ventana de su navegador, así como un seguimiento de la pila.

Además de esto, dataservices arroja todas las excepciones al método HandleException, así que si implementa este método en su clase dataservice, puede ponerle un punto de interrupción y ver la excepción:

protected override void HandleException(HandleExceptionArgs e)
{
  try
  {
    e.UseVerboseErrors = true;
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.Message);
  }
}




wcf-data-services