Сбой вызова службы, когда параметры превышают определенное (маленькое) число - PullRequest
0 голосов
/ 31 января 2012

У меня есть вызов Webservice в моем приложении Silverlight, который завершается неудачно, когда число элементов в параметре составляет около 2500. Кто-нибудь знает, что происходит?

Аргумент объявлен как наблюдаемая коллекция:

var pointIds = new System.Collections.ObjectModel.ObservableCollection<int>();

Я называю это так:

client.ServiceClient.MarkAllPointAsFavouriteAsync(Settings.Current.User.UserId,pointIds);

, и сервисный вызов определяется так:

public void MarkAllPointAsFavourite(Guid userId, List<int> pointIds)
    {
        PointRepository.MarkAllPointAsFavourite(userId, pointIds);
    }

Почему происходит сбой при вызове со спискомпримерно 2500 целых чисел?

Ошибка:

System.ServiceModel.CommunicationException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound. ---> System.Net.WebException: The remote server returned an error: NotFound.
   at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
   at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
   at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__1(Object sendState)
   --- End of inner exception stack trace ---
   at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
   at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
   --- End of inner exception stack trace ---
   at System.ServiceModel.AsyncResult.End[TAsyncResult](IAsyncResult result)
   at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
   at System.ServiceModel.ClientBase`1.ChannelBase`1.EndInvoke(String methodName, Object[] args, IAsyncResult result)
   at Conwx.Net.Client.Framework.CustomerServiceReference.CustomerServiceClient.CustomerServiceClientChannel.EndMarkAllPointAsFavourite(IAsyncResult result)
   at Conwx.Net.Client.Framework.CustomerServiceReference.CustomerServiceClient.Conwx.Net.Client.Framework.CustomerServiceReference.ICustomerService.EndMarkAllPointAsFavourite(IAsyncResult result)
   at Conwx.Net.Client.Framework.CustomerServiceReference.CustomerServiceClient.OnEndMarkAllPointAsFavourite(IAsyncResult result)
   at System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)}

1 Ответ

0 голосов
/ 31 января 2012

Почему происходит сбой при вызове со списком из примерно 2500 целых чисел?

Я обнаружил, что в списке нет примерно 2100 элементов. Это потому, что он строит запрос.

В этом случае, поскольку вы ничего не возвращаете, вы можете сделать метод активируемым, изменив определение на:

[Invoke]
public void MarkAllPointAsFavourite(Guid userId, List<int> pointIds)
{
    PointRepository.MarkAllPointAsFavourite(userId, pointIds);
}

Это обходит ограничение.

Вам также придется немного изменить код вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...