我的WebApp是CMS的一部分,当我向用户提供HTML页面时,它通常包含 a.href 和 img.src 属性。
我目前通过以下网址访问它们:〜/ get-data.aspx / 实例 /user/page.html - 其中 instance 表示报告的特定实例,“user / page.html”是由生成内容的外部应用程序创建的路径。
这非常可靠地使用应用程序的 BeginRequest 方法中的代码,该方法将“.aspx”之后的文本转换为查询字符串,然后使用 Context.RewritePath()。
到目前为止一切都那么好,但我只是绊倒了令我惊讶的事情:看来如果有任何查询字符串(“ instance /user/page.html “)恰好包含加号(”+“),永远不会调用 BeginRequest 方法,并立即将404返回给用户。
所以我的问题是双重的:
我相信我认为“+”会导致404,如果有的话会有其他可能导致类似问题的事情吗?有没有解决这个问题的方法(也许是与 BeginRequest 不同的方法)?
是否有更好的方法来保留生成内容的相对URL路径,而不是我正在使用的内容?如果我能提供帮助,我宁愿不要求网站管理员安装第三方重写工具。
答案 0 :(得分:0)
是的,这是IIS安全设置。你可以把它放在你的网络配置中来解决它。
<system.webServer>
<security>
<requestFiltering allowDoubleEscaping="True"/>
</security>
</system.webServer>
然而,你必须要小心你在做什么。启用双重转义后,它将允许转义的URL本身包含转义字符,可用于利用您的网址重写将转义的字符传递到您的查询字符串,以构建与您想要的不同的查询字符串。