【发布时间】:2020-05-29 05:19:23
【问题描述】:
我有一个 GET 端点,它将用户名作为参数。下面是动作
[Route("user/{userName}")]
public User GetUserByName([FromUri] string userName)
{
// logic here
}
这就是我提出请求的方式。
var restClient = new RestClient("uri");
var request = new RestRequest("user/" + userName);
var response = restClient.Execute(request);
在出现名称包含正斜杠的用户之前,它适用于所有情况。 例如:Akbar/Badhusha 然后请求看起来像 user/Akbar/Badhusha
这导致请求返回Not Fount错误
我尝试使用 AddQueryParameter 方法添加参数。全部返回 Not found 错误。
- 我也试过HttpUtility.UrlEncode
- 还尝试将 / 替换为 %2f
- 也试过 user?userName=Akbar/Badhusha
他们都失败了。
有没有办法让它工作?
【问题讨论】:
-
如果您作为查询字符串发送,它是否有效?例如
user?userName=Akbar/Badhusha -
@MKR,它没有。
-
你需要对你的
userName进行URL编码。 -
如果您从参数中删除
[FromUri]属性,user?userName=Akbar/Badhusha将起作用。 -
您需要允许双重转义并手动解码。见here。
标签: c# asp.net-mvc-4 routing url-parameters