gpt4 book ai didi

wcf - 使用 WCF webHttp 绑定(bind),是否可以传递任意查询字符串参数?

转载 作者:行者123 更新时间:2023-12-03 09:49:04 28 4
gpt4 key购买 nike

场景:

  • 我想调用 RESTish 服务
  • 我想用WCF webHttpBinding调用服务
  • 该服务接受 GET 请求,例如:
    GET /endpoint/{resourcename}/?arg1=a&arg2=b&...
  • 查询字符串参数可能因资源名称而异。我不想在具有特定 UriTemplate 的接口(interface)中创建多个方法设置。
  • 另外,查询字符串参数可以指定多次,即 GET /SomeResource/?a=1&a=2&a=3是一个有效的请求。
  • 我想要的是类似于下面的契约(Contract),WCF webHttpBinding 可以处理这个吗?

  • 例子:
    [WebGet(UriTemplate="/{resourcename}/???")]
    [OperationContract]
    Whatever DoTheThing(string resourcename, Dictionary<string, string> queryStringArgs)

    最佳答案

    如果你能接受你的queryStringArgs调用您的方法时不会填充,而是作为实现的第一步,这将起作用:

    public string GetData(string value)
    {
    var utm = WebOperationContext.Current.IncomingRequest.UriTemplateMatch;
    var queryStringArgs = new Dictionary<string, string>();
    foreach(var query in utm.QueryParameters.AllKeys)
    {
    queryStringArgs.Add(query, utm.QueryParameters[query]);
    }

    return string.Format("You entered: {0} {1}", value, queryStringArgs);
    }

    这是接口(interface)的注释方式:
    [OperationContract]
    [WebGet(UriTemplate = "/GetData/{value}")]
    string GetData(string value);

    当您掌握当前 WebOperationContext 您可以访问属性 UrlTemplateMatch IncomingRequest 上.

    通过迭代 QueryParameters 的原始内容(a NameValueCollection) 您可以以自定义方式处理每个,其中之一可能是将它们添加到字典中。

    关于wcf - 使用 WCF webHttp 绑定(bind),是否可以传递任意查询字符串参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35729900/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com