RIA domainservice / контекстный вызов иногда отказывает от Silverlight - PullRequest
1 голос
/ 25 апреля 2011

У меня очень странная проблема: я разрабатываю бизнес-приложение Silverlight со службами RIA.

У меня есть некоторые DomainServices на стороне сервера, и с одним из них у меня проблема, иногда вызов одного из методов завершается неудачно (на SL-клиенте я получаю исключение "NotFound", и запрос не поступает на сервер (я помещаю точку останова в конструктор службы домена)!

Что делает вещи еще более странными:

  • Если вызов не получен от клиента SL, тогда я запускаю Fiddler2, затем второй (или любой последовательный) вызов работает правильно!Если я закрою fiddler, он снова станет нестабильным.
  • Если я переименую метод, который я хотел бы вызвать (через рефакторинг), вызову переименованный метод в контексте на стороне клиента SL, а затем каждый раз, когда я делаю вызовэто успешно!

Вот мой метод подозрений:

[Invoke]
public void RegisterTrainingProgramCompletion(bool isCompleted, int result, string sportsManNote)
{
 //...
}

Если я переименую этот метод в «RegisterTpCompletion», то он будет работать (unbelievable)!

Служба DomainService помечена некоторыми атрибутами:

[EnableClientAccess()]
[RequiresAuthentication()]
public class NextTrainingProgramDomainService : DomainService

Мне удалось каким-то образом зарегистрировать серверную часть и получить следующее исключение из стека WCF:

Проблема с XML, полученным из сети.Смотрите внутреннее исключение для более подробной информации.в System.ServiceModel.Channels.HttpInput.DecodeBufferedMessage (буфер ArraySegment`1, Stream inputStream) в System.ServiceModel.Channels.HttpInput.ReadBufferedMessage (Stream inputStream) в System.ServiceModel.Channels.HtxtIncoming.ServiceModel.Channels.HttpChannelListener.HttpContextReceived (HttpRequestContext контекст, действие обратного вызова) в System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived (результат HostedHttpRequestAsyncResult) на System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest () в System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest() в System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest (состояние объекта) в System.ServiceModel.AspNetPartialTrustHelpers.PartialTrustInvoke (состояние объекта)IOThreadScheduler.ScheduledOverlapped.numBytes, NativeOverlapped * pOVERLAP)

Так по какой-то неизвестной причине клинт (SL-приложение) не сбрасывает должным образом запрос?Я начинаю беспокоиться: (((*

Мои абоненты (клиент SL) проходят проверку подлинности с помощью пользовательских форм.

Я знаю, вы могли бы сказать, оставьте это как есть, но этосводит меня с ума, я хочу знать, в чем проблема, поэтому я больше не сталкиваюсь с этим.

Спасибо!

Пока, Csabi

1 Ответ

0 голосов
/ 25 апреля 2011

Я подозреваю, что это проблема с URL, в основном URL может быть длиной всего в несколько килобайт.Сейчас я не знаю размер, но в службах RIA он использует URL для отправки вашего фильтра в виде строки запроса.

И имена вашего метода также большие, он достигает максимального лимита URL.Когда он работает даже с громким именем, ваша часть фильтра может быть пустой, но если вы добавите больше фильтров, вы столкнетесь с ошибками.

...