2010-09-30 10 views
5

WCF coincide con esta:WCF/Rest/UriTemplate lista de parámetros de cadena de consulta de longitud variable?

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

a esto:

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

¿Hay una manera de hacer que el VA11, VAL2 ser una lista de longitud variable de parámetros? Entonces podría ser val1, ...., valN? Y termina con un método de servicio como:

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

¿O algo por el estilo?

Respuesta

6

Simplemente OBTENGA una cadena simple y luego conviértala en una matriz (o una lista) en el método, utilizando el método de división.

Su interfaz debe ser algo como esto:

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

Su aplicación:

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

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

     return "Hello"; 
    } 

Y llama así en su navegador:

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

Take a look at the MSDN forum for a detailed answer

+0

basicall y He encontrado que la respuesta a mi pregunta es "No, no puedes hacer eso directamente". Pero sí, tu método funcionará. Le doy un cheque de todos modos. – MonkeyWrench

Cuestiones relacionadas