2012-03-27 11 views
7

El siguiente punto final WCF funciona bien con el cliente de prueba WCF:¿Cómo investigo WCF dando una mala solicitud 400 sobre GET?

[OperationContract] 
[WebGet(ResponseFormat = WebMessageFormat.Xml, 
     BodyStyle = WebMessageBodyStyle.Bare, 
     UriTemplate = "listflaggedassets/{platform}?endpoint={endpoint}&pid={portalid}&processCode={processCode}&index={index}&limit={limit}")] 
AssetList ListFlaggedAssets(short processCode, string platform, string endpoint = "null", string portalId = "null", int index = 0, int limit = 12); 

Sin embargo, cuando intento navegar a la URL http://localhost/DigitalREST/XosAssets.svc/listflaggedassets/SEC?endpoint=superfan&pid=0&processCode=0&index=0&limit=20 recibo una solicitud incorrecta 400.

Parece que no puedo encontrar ninguna manera de averiguar POR QUÉ recibo una solicitud incorrecta, y adjuntarme a IIS para la depuración no infringe ninguna excepción.

¿Cómo puedo investigar la causa de una solicitud incorrecta?

+0

Parece que no tiene WCF registrado correctamente. Si prueba esta URL, ¿qué obtiene? http: //localhost/DigitalREST/XosAssets.svc – tsells

Respuesta

6

Se puede habilitar el seguimiento y el uso de Service Trace Viewer

gota esto en su app.config (registro de fuentes taken from this answer):

<system.diagnostics> 
    <sources> 
     <source name="System.ServiceModel" 
       switchValue="Information, ActivityTracing" 
       propagateActivity="true" > 
     <listeners> 
      <add name="xml"/> 
     </listeners> 
     </source> 
     <source name="System.ServiceModel.MessageLogging"> 
     <listeners> 
      <add name="xml"/> 
     </listeners> 
     </source> 
     <source name="myUserTraceSource" 
       switchValue="Information, ActivityTracing"> 
     <listeners> 
      <add name="xml"/> 
     </listeners> 
     </source> 
    </sources> 
    <sharedListeners> 
     <add name="xml" 
      type="System.Diagnostics.XmlWriterTraceListener" 
      initializeData="TraceLog.svclog" /> 
    </sharedListeners> 
    </system.diagnostics> 

A continuación, abra la TraceLog.svclog en Visor de seguimiento de servicio. Puede que no le diga exactamente lo que está sucediendo, pero proporcionará detalles sobre el tráfico y la excepción en sí.

Es posible que también desee comprobar las excepciones que ha habilitado en el depurador. En Visual Studio, vaya al Debug -> Exceptions y compruebe que tiene el marco correcto marcado.

+0

Gracias. Si bien los registros no fueron útiles (algunos errores xml internos) al menos responde mi pregunta sobre cómo inventariar estos errores WCF. Algo se ha perdido con mi IIS local o web.config porque todo funciona de forma remota. – KallDrexx

+0

Puede consultar [estas instrucciones] (http://msdn.microsoft.com/en-us/library/aa751792.aspx) para verificar la instalación de ASP.NET y WCF. –

0

La mejor manera sería instalar Fiddler y capturar su solicitud junto con habilitar Tracing en su servicio.

También intente eliminar el BodyStyle que especificó en el atributo WebGet y vea si funcionaría.

0

Una de las razones podría ser que me encontré:

yo estaba tratando de solicitar el uso de la dirección URL con cadena de consulta, pero httpbinding no estaba en su lugar en el archivo de configuración y en consecuencia me estaba poniendo error de solicitud 400-Bad.

Cuestiones relacionadas