2008-12-22 6 views
1

Nous utilisons Silverlight 2 avec les services de données ADO.NET et pour tester la page Silverlight nous avons utilisé un service dans le même domaine qui fonctionne bien. Nous avons alors décidé d'utiliser un proxy ou un service intermédiaire (assis dans le même domaine que l'application Silverlight) qui fait simplement surface un service dans un autre domaine (en utilisant la classe générée dans la référence de service du service dans l'autre domaine le type exposé dans notre service local et la création d'un constructeur qui définit l'Uri pour pointer vers). Nous voulions le faire de cette façon, car nous aimerions que notre serveur Silverlight soit installé dans la zone démilitarisée et notre service sur le domaine interne car nous utiliserons le service pour les applications internes, et cela semble être un moyen de contourner le domaine transversal. limitations de Silverlight.Service de données ado.net intermédiaire dans Silverlight

Cela fonctionne bien lorsque l'on utilise la requête suivante:

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

Mais dès que nous essayons d'utiliser l'expansion comme dans:

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

nous obtenons une exception indiquant:

Ne peut spécifier que les options de requête (orderby, where, take, skip) après la dernière projection.

Lorsque la trace de la pile est la suivante:

à System.Data.Services.WebUtil.GetRequestEnumerator (IEnumerable dénombrable) à System.Data.Services.DataService 1.HandleNonBatchRequest (description du RequestDescription) à System.Data .Services.DataService`1.HandleRequest()

Est-ce que quelqu'un a des suggestions sur la raison derrière cela? Cela fonctionne bien sur le service interne bien sûr mais j'aurais pensé que puisque la requête est composable cela aurait travaillé sur le service proxy aussi ...

Toute aide serait grandement appréciée!

Répondre

1

Nous avons réussi à contourner ce problème en utilisant la méthode LoadProperty du côté client. Pour que nous récupérions toutes les questions, puis appelons LoadProperty ("Réponses") et les questions.

Questions connexes