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

Mon*_*nch 5 variables parameters rest wcf uritemplate

WCF将匹配此:

HTTP://本地主机:8888 /测试/ blahFirst/blahSecond/sdfsdf,wwewe

对此:

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

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

string GetVal( string first, string second, List<string> params );
Run Code Online (Sandbox Code Playgroud)

或类似的规定?

Jef*_*ron 6

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

您的界面应如下所示:

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

你的实施:

public string GetVal(string first, string second, string paramArray)
    {
        string[] parameters = paramArray.Split(',');

        foreach (string parameter in parameters)
        {
            Console.WriteLine(parameter);
        }

        return "Hello";
    }
Run Code Online (Sandbox Code Playgroud)

并在浏览器中将其命名为:

http://localhost:8731/MyServer/test/first/second/1,2,3
Run Code Online (Sandbox Code Playgroud)

看一下MSDN论坛的详细解答