2010-09-30 8 views
5

WCF wird dieses Spiel:WCF/Rest/UriTemplate Variable Länge String Parameterliste?

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

dazu:

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

Gibt es eine Möglichkeit, die VA11 zu machen, val2 eine variable Länge Liste der Parameter sein? Also könnte es val1, ...., valN sein? Und am Ende mit einer Service-Methode wie:

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

Oder etwas in diese Richtung?

Antwort

6

GET einfach eine einfache Zeichenfolge und dann konvertieren Sie es in eine Array (oder eine Liste) in der Methode, mit der Split-Methode.

Ihre Schnittstelle sollte wie folgt aussehen:

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

Ihre Implementierung:

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

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

     return "Hello"; 
    } 

Und es wie folgt in Ihrem Browser aufrufen:

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

Take a look at the MSDN forum for a detailed answer

+0

Basicall y Ich habe die Antwort auf meine Frage gefunden: "Nein, das kannst du nicht direkt machen." Aber ja, Ihre Methode wird funktionieren. Ich werde es trotzdem überprüfen. – MonkeyWrench