首页 > 其他分享 >WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法

WCF Data Service 的.NET Client 的不支持原生类型服务操作的解决方法

时间:2022-12-12 18:32:07浏览次数:60  
标签:string Service propertyName System Client WCF Test Data

WCF Data Service 的.NET Client 的不支持返回值为原生类型(string,int)的服务操作调用,例如我们用如下服务操作: [WebGet] public ObjectQu...

WCF Data Service  的.NET Client 的不支持返回值为原生类型(string,int)的服务操作调用,例如我们用如下服务操作:

[WebGet]

public ObjectQuery<string> GetList(string entitySet, string propertyName)

{

               return this.CurrentDataSource.CreateQuery<string>(string.Format("SELECT VALUE E.{1} FROM MyEntities.{0} AS E", entitySet, propertyName)).Distinct();

}

通过下面的方法调用

MyEntities.CreateQuery<string>("GetList").AddQueryOption("entitySet","'Test'")
.AddQueryOption("propertyName","'Test'").BeginExecute(....);
会发生错误:

Error processing response stream. The XML element contains mixed content.
   at System.Data.Services.Client.MaterializeAtom.ReadElementString(Boolean checkNullAttribute)
   at System.Data.Services.Client.MaterializeAtom.ReadNext(ClientType currentType, Type expectedType, AtomParseState atom, EntityStates& entityState, Object& currentValue)
   at System.Data.Services.Client.MaterializeAtom.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)

解决方法:

使用HttpWebRequest请求Rest服务,服务会返回类似下面的ATOM格式数据,通过Linq to XML进行操作:

<ServiceOpName xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices">

<element xml:space="preserve">Value   </element>
...
</ServiceOpName>

 

var q = MyEntities.CreateQuery<string>("GetList").AddQueryOption("entitySet","'Test'")

.AddQueryOption("propertyName","'Test'");
WebClient wc = new WebClient();

wc.DownloadStringAsync(new Uri(q.ToString())); wc.DownloadStringCompleted += (s, e) =>

{

       XDocument xdoc = XDocument.Parse(e.Result);

       List<string> list = xdoc.Root.Descendants(((XNamespace)@"http://schemas.microsoft.com/ado/2007/08/dataservices") + "element")

       .Select(xe => xe.Value).ToList();

};



标签:string,Service,propertyName,System,Client,WCF,Test,Data
From: https://blog.51cto.com/shanyou/5931290

相关文章

  • clientWidth & scrollWidth:
    clientWidth:只读属性 Element.clientWidth 对于内联元素以及没有CSS样式的元素为0;否则,它是元素内部的宽度(以像素为单位)。该属性包括内边距(padding),但不包括边框(bord......
  • Exception in thread "main" kafka.zookeeper.ZooKeeperClientTimeoutException: Time
    遇到问题:今天在启动kafka后创建topic时遇到如下错误:[root@localhostconfig]#kafka-topics.sh--create--zookeeper192.168.68.110:2181,192.168.68.111:2181,192.16......
  • 承载WCF 数据服务
    WCF数据服务默认使用IIS作为DataService宿主,很显然这是个极好的选择,我们可以利用IIS强大的基础功能。除此以外,我们页可以像WCF那样直接使用Sel......
  • 使用 ServiceStack 构建跨平台 Web 服务
    WindowsCommunicationFoundation(WCF)是一个相当优秀的服务框架,当我们讨论跨平台的服务的时候,虽然WCF对WebService的支持还行,在面对一些高级应用的不......
  • VMwareCentOS7Ping 指令报错:Nameorservicenotknown
    VMwareCentOS7Ping指令报错:Nameorservicenotknown1.问题实质:网络配置错误2.问题原因:本地虚拟机网卡,虚拟机网络,虚拟机内部CentOS系统,三方网络配置不匹配3.解决......
  • 服务网格 Pattern: Service Mesh
    服务网格是用于处理服务到服务通信的专用基础设施层。它负责通过包含现代云本机应用程序的复杂服务拓扑来可靠地传递请求。实际上,服务网格通常实现为轻量级网络代理的数组,这......
  • SQLyog连接MYSQL时报错 Client does not support authentication protocol requested
    之前安装MYSQL8.0的时候安装的是绿色版,在cmd中配置完所有参数之后,在连接SQLyog的时候却报出了以下错误翻译一下大致的意思为:客户端不支持服务器请求的身份验证协议;考虑......
  • javaclient操作kafka&springboot整合kafka&kafka分区
    1.javaclient测试kafka1.配置kafka允许远程推送修改config/Kraft/server.properties文件,,将地址变为服务器公网IP地址。advertised.listeners=PLAINTEXT://localhos......
  • sql service重新安装
    sqlservice重新安装经过sqlservice算是一个遗留的问题了,是在搞有关权限问题上出了点问题,然后不知道怎么回事自己弄蹦了,好吧还安装不上了,那个报错是啥我忘了跟我下面遇......
  • okhttpClient 使用示例
    1@Autowired2privateOkHttpClientokHttpClient;34@PostMapping("testOkHttp")5publicResulttestOkHttp(@RequestParam("code")Stringco......