У меня есть приложение Silverlight 3, которое 95% времени успешно запрашивает данные из службы WCF (в том же веб-приложении) и отображает их.
Это случается нечасто, обычно, если я быстро обращаюсь к службе несколько раз, но иногда это происходит по одиночному запросу.
Время от времени, если я запрашиваю много транзакций за короткий период, я получаю одно из двух исключений, оба они происходят в файле Reference.cs
в EndMyMethod(System.IAsyncResult result)
.
Существует несколько методов, и исключения существуют для любого их числа. Первый, это TimeoutException()
, который я понимаю, и это имеет смысл, второй, который я совершенно не понимаю, это «CommunicationException()
был не обработан кодом пользователя: удаленный сервер возвратил ошибку: NotFound».
Я поместил блоки try..catch
как вокруг .MyMethodAsync()
, так и в обработчике для MyMethodCompleted
, но безрезультатно, поскольку исключение возникает в сгенерированном файле Reference.cs
.
Любая помощь очень ценится.
обновление
Reference.cs
- генерируется "Добавить ссылку на службу"
public System.IAsyncResult BeginTogglePicked(string ID, string toggle, System.AsyncCallback callback, object asyncState)
{
object[] _args = new object[2];
_args[0] = ID;
_args[1] = toggle;
System.IAsyncResult _result = base.BeginInvoke("TogglePicked", _args, callback, asyncState);
return _result;
}
public void EndTogglePicked(System.IAsyncResult result)
{
object[] _args = new object[0];
// This is the line where the Exception is Thrown
base.EndInvoke("TogglePicked", _args, result);
}
Код вызова - pickedIDs
- это список строк, а userIDSelecting
- строка, определенная в начале процедуры. Обработчик событий mdc_TogglePIckedCompleted
в данный момент пуст.
MapDataClient mdc = new MyDataClient();
mdc.TogglePickedCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(mdc_TogglePickedCompleted);
foreach (string id in pickedIDs)
{
mdc.TogglePickedAsync(id, userIDSelecting, mdc);
}
Обновление 2
Это "InnerException" от CommunicationException: System.Net.WebException: The remote server returned an error: NotFound.
Не уверен, что это может быть более полезным, поскольку он не дает никаких дополнительных подробностей. Как я уже сказал, это происходит периодически, не каждый раз, когда я вызываю метод обслуживания. Я также хотел бы отметить, что иногда один и тот же вызов будет работать, а другие - нет. Я начинаю думать, что эта проблема связана с тем, что IIS не отвечает на мои сервисные вызовы, мысли?
Обновление 3
Когда я имею в виду временное, я имею в виду истинного интриганта. Это может произойти только один раз в сеансе пользователя, и это может произойти только в одном из пятидесяти сеансов. Это не все или ничего ничего. Вызывающее приложение размещается на том же веб-сайте, что и служба WCF, поэтому я не думаю, что проблема заключается в clintaccesspolicy.xml, но я могу ошибаться.