Есть предложения по решению этой проблемы? Я все время придумываю "отсутствующие" номера строк, когда обращаюсь к машине Google, и это не проблема, с которой мы сталкиваемся. У нас есть номер строки, но он не указывает ни на что, кроме закрывающей скобки.
Может быть, это тайм-аут? Кажется странным, что он постоянно отказывается от метода в самом конце, и от того же метода не меньше. Тайм-ауты не обязательно бывают частыми, и приложение (выигрышные формы, вызывающие веб-службу asmx) время от времени выдает тайм-аут в других местах.
Изменить: трассировка кода и стека.
public DataSet GetData(...)
{
// About 18 try/catch blocks loading tables in dataset, all similar to below
try
{
// Create Table Adapter
// Fill Table
}
catch (Exception ex)
{
LogError(ex, System.Reflection.MethodBase.GetCurrentMethod(), null);
throw ex;
}
} //Line 479
System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: серверу не удалось обработать запрос. ---> System.Data.SqlClient.SqlException: истекло время ожидания. Время ожидания истекло до завершения операции или сервер не отвечает. at MonitoringDataService.AddAllData (DataSet Data, DateTime LastSync, String PrevAreas, String NewAreas, DateTime PrevStartDate, DateTime PrevEndDate, DateTime NewStartDate, DateTime NewEndDate, Int32 CurrentUser, логическая строка IsInGroup9: строка MonitoringData
Стоит отметить, что это внутреннее исключение.
throw exвместоthrow. Это уже обсуждалось здесь несколько раз. Например, см. здесь. Лучший способ решить проблему - удалить все блоки try / catch и только перехватить те ошибки, которые вы обрабатываете явным образом. Есть лучшие способы регистрировать исключения; вы не должны делать все это встроенным. - person Cody Gray   schedule 05.04.2011throwиthrow exможет показаться снисходительной, но просто там уже была предоставлена хорошая информация. Я не хочу дублировать это здесь, и я не смог бы сделать такую же работу, как другие, которые уже опубликовали. - person Cody Gray   schedule 05.04.2011