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

时间:2010-09-30 16:22:45

标签: wcf rest variables parameters uritemplate

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 个答案:

答案 0 :(得分:6)

只需获取一个简单的字符串,然后使用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