我收到了相当容易解释的错误:
从客户端(*)检测到潜在的危险Request.Path值。
该问题是由于*请求网址中的原因:
*
https://stackoverflow.com/Search/test*/0/1/10/1
该URL用于填充搜索页面,其中“ test *”是搜索词,其余URL与各种其他过滤器有关。
有没有一种简单的方法可以在URL中允许这些特殊字符?我尝试修改web.config,但无济于事。
web.config
我应该手动编码/解码特殊字符吗?还是有这样做的最佳实践,我想避免使用查询字符串。-但可能是一个选择。
该应用程序本身是一个c# asp.netWebforms应用程序,它使用路由生成上面的漂亮URL。
c# asp.net
*URL的路径中不允许使用该字符,但是在查询字符串中使用该字符没有问题:
http://localhost:3286/Search/?q=test*
这不是编码问题,*URL中的字符没有特殊含义,因此无论您是否对URL进行编码都无关紧要。您将需要使用其他方案对其进行编码,然后对其进行解码。
例如,使用任意字符作为转义字符:
query = query.Replace("x", "xxx").Replace("y", "xxy").Replace("*", "xyy");
并解码:
query = query.Replace("xyy", "*").Replace("xxy", "y").Replace("xxx", "x");