java怎么消费odata服务_关于DataServiceContext 消费Odata问题

数据源为lightswitch 提供的ODATA服务,本质就是ASP.NET 的WCF data service .

IIS 下站点使用的是FORMS验证方式。

现在使用WPF客户端来消费这个ODATA,通过在客户端添加引用,目前可以获取或操作ODATA数据。但在使用时发现二个问题,不知如何解决(估计是一个问题引起的)。先上代码。

OmsProxy.ApplicationData dataSvc = null;

dataSvc =new OmsProxy.ApplicationData(    new Uri("http://localhost/oms/ApplicationData.svc/")); //此处使用其他正式生产服务器,也是一样问题

dataSvc.Format.UseJson();

dataSvc.Credentials = new NetworkCredential("user", "pwd"); form认证用户名及密码

二个调用数据的处理(button 一次点击)

var query = from a in dataSvc.OrderBills select a;

MessageBox.Show(query.ToList().Count.ToString());

var  query1 = from  b in dataSvc.PayInfos select b;

MessageBox.Show(query1.ToList().Count.ToString());

以上数据能正常调用(一次按钮事件,连续调用二次),新增也没有问题。主要问题表现为:

按MS官网解释如下:

WCF 数据服务是无状态的,但 DataServiceContext 却不是。  在交互之间将保持客户端上的状态,以便支持更新管理这样的功能。  此类以及表示数据服务的特定 HTTP 请求的

按上面解释:DataServiceContext 是有状态的,但我二次调用,通过Fiddler4监控及Sql server Profiler监控结果为表现下面二种情况:

1.Fiddler 里第一次调用,会出现二次请求,第一次为

401 - 未授权: 由于凭据无效,访问被拒绝。  ,紧跟着 第二次请求,能获取数据。 所以上面代码结果为一共四次。二次正确的结果,HTTP里COOKIE也不一样的。

2.Profiler 每一次调用都会调用membership 进行用户验证,再执行我需要执行的SQL语句。二次调用会进行二次用户验证。

DataServiceContext 如何通过一个SESSION进行处理?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值