我已经定义了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没有问题。
由于
答案 0 :(得分:2)
如果服务托管在Visual Studio Development Server(也称为Cassini)上,则当URI包含多个点字符时,它可能会出现问题。这是开发服务器的已知限制。 要解决此问题,请使用IIS Express或完整的IIS。
答案 1 :(得分:0)
您需要对URL中的“@”符号进行URL编码,以便不对其进行错误解析。