网址包含' +'时出现404错误使用ASP.Net Core

时间:2017-01-21 19:20:14

标签: asp.net-mvc asp.net-web-api asp.net-core

当参数的空格编码为+而不是%20时,我的服务器返回404错误。我不明白为什么。 路线的格式为

[Route("/Search/PRM1/{prm1}/PRM2/{prm2}/PRM3/{prm3}")

我的第一个问题是如何让服务器理解这种URL?

https://example.com/Search/PRM1/prm1%20value/PRM2/prm2+value/PRM3/prm3%20value

我的第二个问题是如何使用+而不是%20自动生成更易于阅读的网址?关于SEO有区别吗?

在cshtml中在服务器端生成URL:

<a href="/Search/PRM1/@prm1/PRM2/@prm2/PRM3/@prm3">link</a>

使用prmX变量&#34;清除&#34;文字(包括空格)。使用+代替@System.Net.WebUtility.UrlEncode(prm2)

时,已生成@prm2网址

我已经检查了下面的链接,但该解决方案似乎不适用于ASP.Net Core: WebAPI route 404's when there is a trailing space in the URL

1 个答案:

答案 0 :(得分:0)

如果您要提供搜索服务或可能涉及特殊字符的字段或+/\Query String,最好发送它作为[Route("/Search/PRM1/{prm1}/PRM2/{prm2}/PRM3?prm3=your value here")

{{1}}