Как сузить проблему до фактического, когда вы получаете универсальное исключение SoapException: серверу не удалось обработать запрос. от MS-CRM 4.0

Недавно я начал программировать для CRM 4.0 и выдаю эти запросы с помощью CrmService. Часто я получаю неправильные значения в некотором свойстве динамического объекта, который я использую при отправке запроса. Конечно, запрос не выполняется, я перехватываю исключение и регистрирую его. Проблема в том, что это то, что я получаю:

System.Web.Services.Protocols.SoapException: Server was unable to process request.
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at Microsoft.Crm.SdkTypeProxy.CrmService.Execute(Request Request)
   at MyEntity.Employee.ExecuteCreateRequest(CrmService service, DynamicEntity entity) in c:\Workspaces\One\...\Employee.vb:line 351\nSystem.Xml.XmlElement

что не так много, чтобы пойти с.

До сих пор я исключал некоторые свойства с помощью догадки и снова тестировал их, а затем пытался угадать, что может быть не так со значением свойства. Есть ли другой способ получить более подробную информацию о том, что является причиной ошибки, чтобы я мог определить фактического виновника быстрее.

1 ответ

Решение

Вам понадобится ваш catch блок, чтобы поймать SoapException и затем вы можете вспомнить свойства Detail или Message по мере необходимости. Details свойство вероятно содержит подсказки, которые вы ищете...

...
catch(SoapExcetion soapEx){
    console.writeLine("SoapException: " + soapEx.Detail);
//    console.writeLine("SoapException: " + soapEx.Message);
}
catch(Exception ex){
    console.writeLine("Exception: " + ex.Detail);
}

Вы можете также рассмотреть возможность включения трассировки на сервере CRM и просмотра файлов журнала.

Другие вопросы по тегам