• 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

  • 相关阅读:
    css盒子模型 ( 基本针对兼容性问题有点帮助 )
    11.5 Array 数组
    11.5笔记 数组去重
    11.5笔记 函数
    11..2笔记 对象
    11.1笔记
    10.31笔记
    10.31笔记 作用域链
    10.15笔记 js
    10.8补
  • 原文地址:https://www.cnblogs.com/starlet/p/2439411.html
Copyright © 2020-2023  润新知