2012-03-27 2 views
7

Следующая WCF конечная точка работает нормально с тестового клиента WCF:Как исследовать WCF, давая 400 плохих запросов по 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); 

Однако, когда я пытаюсь перейти к URL http://localhost/DigitalREST/XosAssets.svc/listflaggedassets/SEC?endpoint=superfan&pid=0&processCode=0&index=0&limit=20 я получаю 400 плохой запрос.

Я не могу найти способ выяснить, ПОЧЕМУ я получаю плохой запрос, и прикрепление к IIS для отладки не прерывает никаких исключений.

Как я могу расследовать причину плохого запроса?

+0

Похоже, что у вас нет WCF, зарегистрированного правильно. Если вы попробуете этот url - что вы получите? http: //localhost/DigitalREST/XosAssets.svc – tsells

ответ

6

Вы можете включить трассировку и использовать Service Trace Viewer

Капля это в вашем app.config (вход источников 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> 

Затем откройте TraceLog.svclog в Service Trace, Viewer. Он может не сказать вам, что именно происходит, но он будет содержать информацию о трафике и самом исключении.

Вы также можете проверить исключения, которые вы включили в отладчике. В Visual Studio перейдите к Debug -> Exceptions и убедитесь, что у вас установлен правильный фрейм.

+0

Спасибо. Хотя журналы не были полезны (некоторая внутренняя ошибка xml), он, по крайней мере, отвечает на мой вопрос о том, как invisitage эти ошибки WCF. Что-то fubared с моим локальным IIS или web.config, потому что все это работает удаленно. – KallDrexx

+0

Вы можете просмотреть [эти инструкции] (http://msdn.microsoft.com/en-us/library/aa751792.aspx), чтобы проверить установку как ASP.NET, так и WCF. –

0

Лучшим способом было бы установить Fiddler и уловить ваш запрос вместе с включением Tracing.

Также попробуйте удалить BodyStyle, который вы указали в атрибуте WebGet, и посмотреть, будет ли он работать.

0

Одной из причин может быть, что я столкнулся:

Я пытался просить помощи URL с строки запроса, но httpbinding не было на месте в конфигурационном файле и в результате я получаю 400-Bad ошибка запроса.

Смежные вопросы