zoukankan      html  css  js  c++  java
  • wcf ria services 异步请求提示错误“超出了2083的最大uri长度”

    DomainServices定义方法:

    [Query]
    public IQueryable<EdsContractParaBOMLink> getEdsContractParaBOMLinkCollectionByGuid(List<Guid> contractGuid)

        List<EdsContractParaBOMLink> list = new List<EdsContractParaBOMLink>();
        return list.AsQueryable();
    }

    Silverlight客户端调用DomainServices里面提供的Query方法:

    LoadOperation<EdsContractParaBOMLink> loadOP = _edsSoDC.Load<EdsContractParaBOMLink>(_edsSoDC.getEdsContractParaBOMLinkCollectionByGuidQuery(contractGuidList));

    提示错误:

    错误原因: 监测URL请求

    1111

    不难发现Query的调用的方法都是Get方式,Invoke方式调用的方法都是 Post方式!大家都Html常识的,我就不解释了

    解决方法:更换为Invoke方式:

    [Invoke]
    public List<EdsContractParaBOMLink> getEdsContractParaBOMLinkCollectionByGuid(List<Guid> contractGuid)
    {
        return new List<EdsContractParaBOMLink>();
    }

    Silverlight客户端更换为

    InvokeOperation<IEnumerable<EdsContractParaBOMLink>> invokeLoadData = _edsSoDC.getEdsContractParaBOMLinkCollectionByGuid(contractGuidList);

    问题解决!

    补充说明:

    还有一种简单的方法:
    设置Query的属性QueryAttribute.HasSideEffects
    [Query(HasSideEffects = true)] 这样客户端Load时,请求方式变成Post方式,解决了URL超长的问题!


    参考MSDN http://msdn.microsoft.com/zh-cn/library/system.servicemodel.domainservices.server.queryattribute.hassideeffects(v=vs.91).aspx

  • 相关阅读:
    wap学习记录
    vue router
    webpack 之 缓存处理
    webpack 之 plugin
    webpack 之 loader
    babel实践
    webpack 之 webpack-dev-server自动刷新
    webpack之source map
    vue笔记
    《高性能网站建设指南》笔记
  • 原文地址:https://www.cnblogs.com/starlet/p/2439411.html
Copyright © 2011-2022 走看看