2012-03-27 23 views
7

Di seguito endpoint WCF funziona bene con il client di prova WCF:Come si indaga su WCF che fornisce 400 richieste errate su 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); 

Tuttavia, quando si tenta di accedere alla URL http://localhost/DigitalREST/XosAssets.svc/listflaggedassets/SEC?endpoint=superfan&pid=0&processCode=0&index=0&limit=20 ho un cattivo richiesta di 400.

Non riesco a trovare alcun modo per capire PERCHÉ sto ricevendo una cattiva richiesta e il collegamento a IIS per il debug non si interrompe su alcuna eccezione.

Come posso indagare sulla causa di una richiesta errata?

+0

Sembra che tu non abbia registrato correttamente WCF. Se provi questo URL - cosa ottieni? http: //localhost/DigitalREST/XosAssets.svc – tsells

risposta

6

Si potrebbe attivare l'analisi e utilizzare Service Trace Viewer

goccia questo nella vostra app.config (logging fonti 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> 

Quindi, aprire il TraceLog.svclog in Service Trace Viewer. Potrebbe non dirti esattamente cosa sta succedendo, ma fornirà dettagli sul traffico e sull'eccezione stessa.

Si consiglia inoltre di verificare le eccezioni abilitate nel debugger. In Visual Studio, vai su Debug -> Exceptions e verifica di aver controllato il framework corretto.

+0

Grazie. Mentre i log non erano utili (qualche errore interno xml), almeno risponde alla mia domanda su come invesitare questi errori WCF. Qualcosa è rovinato sia con il mio IIS locale o web.config perché tutto funziona in remoto. – KallDrexx

+0

È possibile controllare [queste istruzioni] (http://msdn.microsoft.com/en-us/library/aa751792.aspx) per verificare l'installazione di ASP.NET e WCF. –

0

Il modo migliore sarebbe installare Fiddler e acquisire la richiesta insieme all'abilitazione del servizio Tracing.

Provare anche a rimuovere il BodyStyle specificato nell'attributo WebGet e verificare se funzionerebbe.

0

Una ragione potrebbe essere che ho incontrato:

stavo cercando di chiedere utilizzando l'URL con querystring ma httpbinding non ero a posto nel file di configurazione e in seguito mi è stato sempre errore di richiesta 400-Bad.

Problemi correlati