Промежуточный сервис данных ado.net в Silverlight - PullRequest
1 голос
/ 22 декабря 2008

Мы используем Silverlight 2 с устройствами данных ADO.NET, и для тестирования страницы silverlight мы использовали службу в том же домене, которая работает нормально. Затем мы решили попробовать использовать прокси или промежуточную службу (находящуюся в том же домене, что и приложение Silverlight), которая в основном просто отображает службу, находящуюся в другом домене (используя класс, сгенерированный в ссылке на службу для службы в другом домене, как тип, представленный в нашем локальном сервисе и создающий конструктор, который указывает на Uri). Мы хотели сделать это так, как нам хотелось бы, чтобы наш сервер Silverlight находился в демилитаризованной зоне, а наш сервис - во внутреннем домене, так как мы будем использовать этот сервис и для внутренних приложений, и это, похоже, обходит междоменный домен. ограничения Silverlight.

Это прекрасно работает, когда мы используем следующий запрос:

var questions = (from q in context.Question
                            select q)

Но как только мы попытаемся использовать расширение, как в:

var questions = (from q in context.Question.Expand("Answers")
                            select q)

мы получаем исключение, заявляющее:

Может указывать параметры запроса (orderby, where, take, skip) после последнего проецирования.

Где трассировка стека:

в System.Data.Services.WebUtil.GetRequestEnumerator (IEnumerable enumerable) в System.Data.Services.DataService 1.SerializeResponseBody(RequestDescription description, IDataService dataService) at System.Data.Services.DataService 1.HandleNonBatchRequest (описание описания запроса) в System.Data.Services.DataService`1.HandleRequest ()

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

Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 17 апреля 2009

Нам удалось обойти эту проблему с помощью метода LoadProperty на стороне клиента. Чтобы мы получили все вопросы, а затем вызвали LoadProperty («Ответы») и вопросы.

...