首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

怎么在客户端代码访问ado.net data service

2012-03-28 
如何在客户端代码访问ado.net data service?我在网上查了些例子,自己尝试的时间为什么就老出错呢?服务器如

如何在客户端代码访问ado.net data service?
我在网上查了些例子,自己尝试的时间为什么就老出错呢?
服务器如下:

C# code
[WebGet]public IQueryable<string> GetDefectDistinct(string defect){    IQueryable<string> result;    switch (defect.ToLower())    {        case "corrosion":            result = (from p in this.CurrentDataSource.PLDA_CORROSION                      orderby p.INSPECTIONBATCH                      select p.INSPECTIONBATCH).Distinct();            break;                        case "weld":            result = (from p in this.CurrentDataSource.PLDA_WELD                      orderby p.INSPECTIONBATCH                      select p.INSPECTIONBATCH).Distinct();            break;        default:            throw new Exception("输入参数错误");    }    return result;}


客户端如下:
C# code
private void btnTest_Click(object sender, RoutedEventArgs e){    string uri = string.Format("/GetDefectDistinct?defect='corrosion'");    IEnumerable<string> strList = PLDA.Data.DataSource.pRemoteSource.Execute<string>(new Uri(uri, UriKind.Relative));    foreach (var p in strList)    {    }}


代码很简单,我在浏览器中访问没问题,可以正常显示,
但在客户端访问时Execute这行语句能执行,但实际上strList为空,
foreach时,就会出现一些异常:未处理InvalidOperationException,处理响应流时出错,XML元素包含混合内容。
但通过Fiddler查看从服务端返回的结果仍然是正常的。

这又是为什么呢?

[解决办法]
http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataservices/thread/418ab1e3-d087-4e8d-8841-0df6b6a856bc
[解决办法]
探讨

谢谢,已经搞定,代码如下,
但存在一个问题,目前我的服务端不需要用户验证,
所以下面的代码可以直接使用,但如果我以后在服务端加上验证的话,
我会在原来的上下文PLDA.Data.DataSource.pRemoteSource加上验证信息,
但下面的方法是用的WebClient直接下载相应返回值为字符串,然后对字符串处理的,
那如何为WebClient添加验证信息呢?
代码注释部分直……

[解决办法]
恩,从数据量考虑还是有道理的。

DataService Client底层还是调用HttpWebRequest,
所以直接使用WebClient或者HttpWebRequest的验证问题应该没什么。

热点排行