2008-09-10 7 views
14

Estoy añadiendo una característica de búsqueda de servicios de datos ADO.Net a una página web existente. Todo funciona muy bien cuando se ejecuta desde Visual Studio, pero cuando me enrollo a IIS, me sale el siguiente error:el despliegue de la aplicación de servicio de datos ADO.Net a IIS

Request Error
The server encountered an error processing the request. See server logs for more details.

consigo esto, incluso cuando se trata de mostrar la página por defecto, es decir:

http://server/FFLookup.svc

Tengo 3.5 SP1 instalado en el servidor.

¿Qué me falta y que "los registros del servidor" está refiriendo a que? No puedo encontrar ningún mensaje de error adicional.

No hay nada en los registros del Visor de eventos (sistema o aplicación), y nada en los registros de IIS que no sean 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,+like+Gecko)+Chrome/0.2.149.29+Safari/525.13 401 2 2148074254

No hay seguimiento de la pila regresó. La única respuesta que recibo es el "Error de solicitud" como se indicó anteriormente.

Gracias

Patrick

+0

Puede ejecutar el administrador IIS (Ejecutar> inetmgr) y hacer clic con el botón derecho en el archivo del servicio. Haga clic en Examinar. es posible que obtenga más detalles de error si prueba con localhost. También tenga en cuenta la url en el navegador. Tal vez el sitio web está configurado para un puerto diferente. –

Respuesta

13

Bueno me pareció que los "registros de servidor" que se mencionan en el error anterior.

Necesitas activar el rastreo en el archivo web.config mediante la adición de 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 su directorio de sitios 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 con el archivo de registro creado con los parámetros anteriores crece muy rápidamente. ¡Solo enciéndalo durante la depuración!

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

+0

¿Te ayudó a resolver tu problema? Sería genial si puedes compartir tus hallazgos. –

42

Para más detallados muestran los errores resultantes de su servicio de datos se puede colocar la siguiente etiqueta por encima de su definición Dataservice:

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

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

Además de esta DataServices tiros todas las excepciones al método HandleException por lo que si se implementa este método en su clase Dataservice se puede poner un punto de quiebre en él y ve la excepción:

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

Para mí el error fue causado por dos métodos que tienen el mismo nombre (sobrecarga involuntaria).

Overloading is not supported but type 'abc' has an overloaded method 'Void SubmitCart(System.String, Int32)'.

Me enteré al ejecutar el servicio en modo de depuración.

Cuestiones relacionadas