2012-05-30 1 views
0

Я хочу создать метод службы WCF RESTful, который может принимать произвольное количество параметров в строке запроса и отправлять их в некоторый тип ключа, параметр сбора значений метода. Для примера:Словарь WCF WebGet Параметр в GET

, если я называю

"HTTP: //localhost/Service.svc/DoWork p1 = тест & p2 = testAgain"

Я хотел бы реализацию метода выглядеть следующим образом:

[WebGet] 
    public void DoWork(Dictionary<string,string> values) 
    { 
     // Add your operation implementation here 
     return; 
    } 

и параметр values содержат ключи p1, p2 с соответствующими значениями.

Как я могу это сделать? Я был одним из способов определить пользовательский UriTemplate и все, что отправлено в один строковый параметр, и проанализировать его, но символы «&» - это бросок и опасное исключение для форума. Я не могу не думать, что есть более простой способ добиться этого.

ответ

1

Вы можете получить доступ к строке запроса запроса через WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri.Query. Затем вы можете использовать HttpUtility.ParseQueryString, чтобы разобрать это на NameValueCollection, что похоже на Dictionary<string, string>, который вы хотите.

1

Не могли бы вы извлечь эту информацию из объекта HttpContext.Current.Request.QueryString?