WCF WebGet Словарь Параметр на GET
Я хочу создать метод службы WCF RESTful, который может получать произвольное количество параметров в строке запроса и отправлять их в ключ типа, параметр сбора значений в методе. Например:
если я позвоню
"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 и отправить все в один строковый параметр и разобрать его, но выбрасываются символы "&" и возникает опасное исключение для запроса форума. Я не могу помочь, но думаю, что есть более простой способ достичь этого.
2 ответа
Вы можете получить доступ к строке запроса запроса через WebOperationContext.Current.IncomingRequest.UriTemplateMatch.RequestUri.Query
, Вы можете использовать HttpUtility.ParseQueryString
разобрать это в NameValueCollection
, который похож на Dictionary<string, string>
что ты хочешь.
Не могли бы вы извлечь эту информацию из объекта HttpContext.Current.Request.QueryString?