2010-09-30 102 views
5

WCF将匹配这样的:WCF/Rest/UriTemplate可变长度查询字符串参数列表?

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); 

或沿着这些线?

回答

6

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

你的接口应该是这个样子:

[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

+0

Basicall我发现我的问题的答案是“不,你不能直接这样做。”但是,是的,你的方法将起作用。无论如何,我会给它一张支票。 – MonkeyWrench 2011-01-14 16:43:41