代码之家  ›  专栏  ›  技术社区  ›  MonkeyWrench

WCF/Rest/UriTemplate可变长度查询字符串参数列表?

  •  5
  • MonkeyWrench  · 技术社区  · 15 年前

    WCF将与此匹配:

    http://localhost:8888/test/blahFirst/blahSecond/sdfsdf,wwewe

    对此:

    [OperationContract]
    [WebGet( UriTemplate = "test/{first}/{second}/{val1},{val2}" )]
    string GetVal( string first, string second, string val1, string val2 );
    

    有没有办法让va11,val2成为一个可变长度的参数列表?所以可能是val1,…,valN?最终得到一种服务方法,如:

    string GetVal( string first, string second, List<string> params );
    

    或者类似的东西?

    1 回复  |  直到 15 年前
        1
  •  6
  •   Jeff Caron    15 年前

    只需获取一个简单的字符串,然后使用split方法将其转换为方法中的数组(或列表)。

    [OperationContract]
    [WebGet(UriTemplate = "test/{first}/{second}/{val1}")]
    string GetVal(string first, string second, string val1);
    

    您的实施:

    public string GetVal(string first, string second, string paramArray)
        {
            string[] parameters = paramArray.Split(',');
    
            foreach (string parameter in parameters)
            {
                Console.WriteLine(parameter);
            }
    
            return "Hello";
        }
    

    在浏览器中这样称呼它:

    http://localhost:8731/MyServer/test/first/second/1,2,3
    

    Take a look at the MSDN forum for a detailed answer