我们将 Silverlight 2 与 ADO.NET 数据服务一起使用,并测试 silverlight 页面,我们在同一域中使用了一个运行良好的服务。然后我们决定尝试使用代理或中间服务(与 Silverlight 应用程序位于同一域中),它基本上只是显示位于另一个域中的服务(通过使用在另一个域中的服务的服务引用中生成的类作为在我们的本地服务中公开的类型并创建一个将 Uri 设置为指向的构造函数。我们想这样做是因为我们希望我们的 silverlight 服务器位于 DMZ 中,而我们的服务位于内部域上,因为我们也将服务用于内部应用程序,这似乎是一种绕过跨域的方式Silverlight 的限制。
当我们使用以下查询时,这可以正常工作:
var questions = (from q in context.Question
select q)
但是,一旦我们尝试使用 expand ,如下所示:
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(RequestDescription description) 在 System.Data.Services.DataService`1.HandleRequest()
有人对这背后的原因有什么建议吗?这当然适用于内部服务,但我认为由于查询是可组合的,这也适用于代理服务......
任何帮助将不胜感激!