电子邮件地址作为WCF数据服务查询字符串的一部分

时间:2011-12-13 14:50:41

标签: c# encoding query-string wcf-data-services fiddler

我已经定义了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测试一下,但我不知道如何在查询字符串中传递电子邮件地址。如果我在小提琴手中尝试这个:

  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 个答案:

答案 0 :(得分:2)

如果服务托管在Visual Studio Development Server(也称为Cassini)上,则当URI包含多个点字符时,它可能会出现问题。这是开发服务器的已知限制。 要解决此问题,请使用IIS Express或完整的IIS。

答案 1 :(得分:0)

您需要对URL中的“@”符号进行URL编码,以便不对其进行错误解析。

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