После того как пытаешься делать первые шаги при вызове веб-службы иногда можно получать ошибки типа: «Произошла ошибка! Обратитесь к системному администратору» в IE или «Server was unable to process request».

Есть несколько способов, следуя которым можно получить реальную причину ошибки. Первое – попробовать написать такой код:

try {
//работа с CRM службой
}
catch (Exception e) {
//Вместо Log можно использовать MessageBox.Show или Console.WriteLine. Важное – это параметр.
Log(e.ToString()); //или даже Log(e.Message);
}

Обратите внимание, что вы вызываете веб-службу. Это означает что вы получаете SoapException и у SoapException есть свойство Detail, которое может как содержать, так и иногда нет, детальную информацию об ошибке. Когда вызываете веб-службы CRM необходимо всегда делать следующие проверки:

try {
//работа с CRM службой
}
catch (System.Web.Services.Protocols.SoapException e) {
Log(«Detail = » + e.Detail.InnerText + «\r\nException: » + e.ToString());
}
catch (Exception anyOtherException) {
//Этот код приведен лишь для того, чтобы показать разницу с предыдущим.
Log(«Exception: » + anyOtherException.ToString());
}

SoapException все еще может содержать данные, которые не очень помогут выявить проблему, можно выполнить следующие шаги.

Откройте файл web.config в корне вашего CRM и добавьте следующие изменения:
<add key=»DevErrors» value=»On»/>
Более подробно можно почитать здесь.

Так же можно включить отслеживание событий на сервере, статья на сайте microsoft.
Когда вы включите трассировку то можно получить даже больше информации. Это скажется на производительности, т.к. потребляет значительные ресурсы, но если вы используете тестовую систему то можно экспериментировать ;) .

Michael Hohne сделал подробное удобную утилиту для использования при включенной трассировке.

With best regards to Michael Höhne