我在ASP.net中实现了URL重写,我的URL导致了我一个问题的世界。ASP.Net URL编码
该URL由部门数据库&类别生成。我希望员工能够使用任何特殊字符将数据添加到数据库,而不会中断网站。
我在构建URL之前对数据进行编码。
有几个问题...
- IIS达到.NET使其无法正常使用“/”,在它解析任何东西之前的URL进行解码。
- ASP.net获取由url建设“〜”糊涂某些页面
- 我从内置的测试服务器,以我的本地IIS服务器(XP机)和含有编码&(26%)的任何URL迁移内无用给我一个“错误的请求”错误。
- UrlEncode会留下一些未改变的分隔符,例如'。'
我确实在这个问题上有两个其他相关的帖子,当时我只看到小问题而不是上游的大问题。我发现了一些注册表技巧来解决“错误请求”问题,但我将部署到共享主机环境,使其无用。我也知道这是一个安全问题的解决方案,所以我不想在不知道我打开什么蠕虫的情况下绕过它。
与其试图强制.net向我传递原始URL或覆盖IIS设置,我想首先制作真正安全的URL。
我会注意到我试过AntiXss.URLEncode,HttpUtility.URLEncode,URI.EscapeDataString。我甚至尝试过像URLEncodng这样的愚蠢的东西。有没有一种能够满足我需要的功能,还是我真的需要推出自己的产品。我甚至考虑做一些Hacky,比如用一串不寻常的字符替换%。最终的结果应该至少是可读的,这是首先使用URL重写的要点。
对不起,很长的文章 - 我只是想确保我已经包含了所有必要的细节。我似乎无法找到任何有关这方面的信息,似乎这将是一个普遍的问题 - 所以也许我错过了一些大事。感谢您的帮助,并耐心解释长篇大论!
编辑为清楚:
当我说的网址正在从数据库建立我的意思是,目录结构是从我的数据库中的部门和类别contstructed。
的一些示例网址 -
的MyStore /制冷/酒吧+ Fridge.aspx
的MyStore /烹调+ Equipment.aspx
的MyStore /厨房/切割+ Boards.asxpx
的问题进来时我使用“Beverage & Bar”或“Pastry/Decorating”等部门来构建我的网址。尽管首先被编码,但会导致上述问题。
我的处理程序已经实现并且工作正常,除了特殊字符编码问题。
在这里充分披露的利益是我的其他相关posts- http://stackoverflow.com/questions/1274669/ url-encoding-being-lost-before-processing-asp-net - 类似的问题,但我试图强制.net给我的原始URL,而不是固定在原始链接上的编码。 http://stackoverflow.com/questions/1194900/asp-net-path-problems-caused-by-encoded-urls 试图修复“〜”问题之前,我意识到有更大的问题。 – 2009-08-17 15:37:32