首页 > 解决方案 > Asp.Net Web Api 允许 Url 编码的正向/反向斜杠

问题描述

我正在尝试将带有一些特殊字符的字符串发送到我的 Asp.Net Web Api 控制器。但是,Asp.Net 似乎无法解析 url 编码的字符串。发送“A%2F223%2F4”之类的内容是“A/223/4”的编码,同样也不适用于反斜杠。它确实适用于其他特殊字符。有什么办法可以让这个工作吗?或者是否可以关闭自动解码,以便我可以手动完成?

这是我的控制器内部的功能:

[HttpGet, Route("getByArtNr/{articleNr}")]
public IHttpActionResult GetByArtNr(string articleNr)
{
    Article article = dbContext.Article.Where(x => x.ArtNr == articleNr).FirstOrDefault();
    if(article == null)
        return NotFound();

    return Ok(article);
}

示例请求: http://localhost:54282/api/v1/article/getByArtNr/A%2F223%2F4/

标签: asp.netasp.net-web-api

解决方案


为了发送一个包含/(斜杠)的字符串,我们可以wildcard parameters在路由中使用。像这样的东西:

Route("getByArtNr/{*articleNr}")

这将允许将具有多个/字符的 URL 块作为单个参数读取。

希望能帮助到你。


推荐阅读