Xamarin.android MVVMCross&x2B;Xamarin+;WCF Data Services 5.6=未实现异常?

Xamarin.android MVVMCross&x2B;Xamarin+;WCF Data Services 5.6=未实现异常?,xamarin.android,xamarin,wcf-data-services,mvvmcross,Xamarin.android,Xamarin,Wcf Data Services,Mvvmcross,我正在MVVMCross的PCL项目中使用WCF数据服务5.6。在WPF客户端中,以下代码(在viewModel中)的工作方式类似于一个符咒(基于在中找到的示例): DataServiceQuery query=this.LoadItemsQuery; query.BeginExecute((结果)=> { 尝试 { DataServiceQuery resultQuery=result.AsyncState作为DataServiceQuery; foreach(resultQuery.EndE

我正在MVVMCross的PCL项目中使用WCF数据服务5.6。在WPF客户端中,以下代码(在viewModel中)的工作方式类似于一个符咒(基于在中找到的示例):

DataServiceQuery query=this.LoadItemsQuery;
query.BeginExecute((结果)=>
{
尝试
{
DataServiceQuery resultQuery=result.AsyncState作为DataServiceQuery;
foreach(resultQuery.EndExecute(结果)中的T项)
{
//在这里做点什么
}
}
捕获(例外情况除外)
{
发布异常(ex);
}
}
,查询);
但在Android客户端中,“resultQuery.EndExecute(result)”抛出以下异常:

System.InvalidOperationException: An error occurred while processing this request. ---> System.NotImplementedException: The requested feature is not implemented.
  at System.Net.WebResponse.get_SupportsHeaders () [0x00000] in <filename unknown>:0 
  at System.Data.Services.Client.HttpWebRequestMessage.EndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  at System.Data.Services.Client.ODataRequestMessageWrapper.EndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  at System.Data.Services.Client.DataServiceContext.GetResponseHelper (System.Data.Services.Client.ODataRequestMessageWrapper request, IAsyncResult asyncResult, Boolean handleWebException) [0x00000] in <filename unknown>:0 
  at System.Data.Services.Client.DataServiceContext.EndGetResponse (System.Data.Services.Client.ODataRequestMessageWrapper request, IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  at System.Data.Services.Client.RequestInfo.EndGetResponse (System.Data.Services.Client.ODataRequestMessageWrapper request, IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  at System.Data.Services.Client.QueryResult.AsyncEndGetResponse (IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at System.Data.Services.Client.BaseAsyncResult.EndExecute[QueryResult] (System.Object source, System.String method, IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 
  at System.Data.Services.Client.QueryResult.EndExecuteQuery[Appointment] (System.Object source, System.String method, IAsyncResult asyncResult) [0x00000] in <filename unknown>:0 }
System.InvalidOperationException:处理此请求时出错。-->System.NotImplementedException:请求的功能未实现。
在System.Net.WebResponse.get_SupportsHeaders()[0x00000]中:0
位于:0中的System.Data.Services.Client.HttpWebRequestMessage.EndGetResponse(IAsyncResult asyncResult)[0x00000]处
位于:0中的System.Data.Services.Client.ODataRequestMessageWrapper.EndGetResponse(IAsyncResult asyncResult)[0x00000]处
在System.Data.Services.Client.DataServiceContext.GetResponseHelper(System.Data.Services.Client.ODataRequestMessageWrapper请求、IAsyncResult asyncResult、Boolean handleWebException)[0x00000]中:0
0中的System.Data.Services.Client.DataServiceContext.EndGetResponse(System.Data.Services.Client.ODataRequestMessageWrapper请求,IAsyncResult asyncResult)[0x00000]处
0中的System.Data.Services.Client.RequestInfo.EndGetResponse(System.Data.Services.Client.ODataRequestMessageWrapper请求,IAsyncResult asyncResult)[0x00000]处
位于:0中的System.Data.Services.Client.QueryResult.AsyncEndGetResponse(IAsyncResult asyncResult)[0x00000]处
---内部异常堆栈跟踪的结束---
位于:0中的System.Data.Services.Client.BaseAyncResult.EndExecute[QueryResult](System.Object源、System.String方法、IAsyncResult asyncResult)[0x00000]
位于System.Data.Services.Client.QueryResult.EndExecuteQuery[Appointment](System.Object源,System.String方法,IAsyncResult asyncResult)[0x00000]中:0}
有什么想法吗?有人用MonoDroid测试过WCF数据服务5.6吗

提前感谢

从源代码中可以看出,它确实没有实现

Mono的WCF支持还不完整,因此对WCF数据服务使用它是有风险的


如果可能,在服务器端使用ASP.NET Web API而不是WCF,然后在客户端通过HttpClient获得更好的支持。

错误在HttpWebResponse.cs中,它应该添加以下内容:

public override bool SupportsHeaders
{
    get
    {
        return true;
    }
}

应与最新版本配合使用:Mono for Android 4.12.3。我测试发现它与Microsoft.Data.Service.Client.Portable.dll配合使用

public override bool SupportsHeaders
{
    get
    {
        return true;
    }
}