Адрес электронной почты как часть строки запроса службы данных WCF - PullRequest
0 голосов
/ 13 декабря 2011

Я определил операцию службы WCF REST следующим образом:

  [OperationContract]
  [WebInvoke(UriTemplate = "/findcomplaints/{applicationkey}/{culture}/{maxNumberOfComplaints}/{emailaddress}/{categoryid}/{onlymarkedasabusive}/{sortkey}/{pagenumber}", Method = "GET", ResponseFormat = WebMessageFormat.Json)]
  FindComplaintsResponse FindComplaints(string applicationKey, string culture, string maxNumberOfComplaints, string emailAddress, string categoryId, string onlyMarkedAsAbusive, string sortKey, string pageNumber);

Я хочу проверить это с помощью fiddler, но я не знаю, как передать адрес электронной почты в строке запроса. Если я попробую это в Fiddler:

  http://localhost:55708/ComplaintService.svc/findcomplaints/code/nl-BE/5/email@hotmail.com/1/1/sortkey/1

тогда я получаю сообщение об ошибке «Ресурс не найден» (из-за части «email@hotmail.com», потому что, если я заменю его обычной строкой, я не получу ошибку).

Есть идеи, как передать электронное письмо в этом URI?

РЕДАКТИРОВАТЬ: Я также пытался экранировать знак @ с% 40, но получил ту же ошибку. На самом деле, @ не вызывает никаких проблем. Кажется, это точка, которая вызывает ошибку. Но почему?

EDIT2: если я использую? синтаксис вроде http://localhost:55708/ComplaintService.svc/findcomplaints?email=email@hotmail.com проблем нет.

Спасибо

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

Если служба размещена на Visual Studio Development Server (так называемый Cassini), могут возникнуть проблемы, когда URI содержит несколько символов точек. Это известное ограничение сервера разработки. Для решения этой проблемы используйте IIS Express или полноценный IIS.

0 голосов
/ 13 декабря 2011

Вам нужно, чтобы URL кодировал символ '@' в URL, чтобы он не анализировался неправильно.

http://www.w3schools.com/tags/ref_urlencode.asp

...