我们有一个带有以下资源 url 的 web api。
http://www.example.com/book/bookid/name/bookname
现在有一些书的名字带有“&”符号,当请求这些名字时,我们收到以下错误
使用的网址:
http://www.example.com/book/123/name/ban&ban
错误:从客户端 (&) 检测到具有潜在危险的 Request.Path 值
我们尝试传递或使用 & 的编码值,即 %26 并得到相同的错误。
使用的网址:
http://www.example.com/book/123/name/ban%26ban
错误:从客户端 (&) 检测到具有潜在危险的 Request.Path 值
现在,当我在 httpruntime 元素的 web.config 中添加 requestPathInvalidCharacters=""属性时,它开始对上述两个 url 正常工作。但是,当我阅读不同的文章时,据说使用 requestPathInvalidCharacters=""属性不是一个好习惯。
另外,由于生产中有很多书名带有“&”和不同的特殊字符,我们不可避免地会在书名中发送“&”符号,请问有什么好的处理方法吗?
最佳答案
您应该选择在查询字符串中使用参数而不是路径。例如: http://www.example.com/book/bookid?name=Fizz&bookname=Buzz
这里有一些解释为什么会引发这个异常: http://www.hanselman.com/blog/ExperimentsInWackinessAllowingPercentsAnglebracketsAndOtherNaughtyThingsInTheASPNETIISRequestURL.aspx
关于c# - url 资源包含&符号时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50475697/