FIX UPDATE
似乎我没有足够重视404.11的实际错误,这意味着它不允许allowDoubleEscaping所以我必须将web.config添加到我的项目并将其设置为以下
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
</system.webServer>
</configuration>
我有以下属性路径
[Route("home/coin/{symbol:alpha}/{name:alpha?}")]
public IActionResult Symbol(string symbol, string name)
如果我导航到/home/coin/mysymbol
然后它就可以了,如果我有/home/coin/mysymbol/myname
这也有效,但是如果我有/home/coin/mysymbol/myname+moreofname
那么它会产生404 Not Found
,{{传递的参数是URL编码的,因此任何空格都变为name
更新控制器的其余部分(代码被剥离)
+
答案 0 :(得分:0)
如果您只是替换+和其他特殊字符怎么办?使用如下函数:
public string ClearnUrl(string title)
{
string cleanTitle = title.ToLower().Replace(" ", "-");
//Removes invalid character like .,-_ etc
cleanTitle = Regex.Replace(cleanTitle, @"[^a-zA-Z0-9\/_|+ -]", "");
cleanTitle = cleanTitle.Replace("/", "");
return cleanTitle;
}