【发布时间】:2012-03-06 18:13:50
【问题描述】:
我正在编写一个具有如下方法的 REST Web 服务:
[WebGet(
UriTemplate = "/Test/{p1}/{p2}",
BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml)]
public string Test(string p1, string p2)
{
// Do something here
}
因此,如果我调用 basurl/Test/prova/test 我的方法 Test 会被 p1="prova" 和 p2="test" 调用,并且一切正常。
当我尝试使用具有(例如) % 字符的参数时出现问题:即使在 URL 代码中翻译它,当我尝试调用 basurl/Test/prova/te%25st 时,我得到一个
Errore HTTP 400 - 错误请求。
如果我使用
[WebGet(
UriTemplate = "/Test/{p1}?p2={p2}",
BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Xml)]
public string Test(string p1, string p2)
{
// Do something here
}
并致电basurl/Test/prova?p2=te%25st 即可。
为什么?我该怎么做才能让第一个语法起作用?
更新:
用可能的解决方案查看我的答案。
如果有人找到更好的,请发布!!
谢谢
【问题讨论】:
标签: c# web-services rest