2010-01-06 105 views
2

我敢肯定,这不能做,但是我正在寻找一个黑客或办法把一个+在一个文件夹的名称,如我可以在IIS文件夹中加一个+号吗?

http://www.mysite.com/cats+dogs/Default.aspx

我使用的是IIS 7,并试图创建一个虚拟目录来实现这一目标,并没有奏效。我不允许将%2B放入资源管理器文件夹或虚拟文件夹名称中。

任何想法如何我可以破解这个工作?我们已经有小册子上打印了一个网址,并想知道是否有某种方法可以替代它或一些可能做到的技巧。

编辑:我能够解决这个问题,通过创建一个带有+的虚拟文件夹,然后重定向到一个URL,它指向一个带有内容的虚拟目录。

+2

“我们已经有印有小册子的宣传册” - 哎呀! – 2010-01-06 15:42:20

+0

另请参阅:http://stackoverflow.com/q/3375789/12484 – 2014-02-28 20:16:06

回答

5

你可能有一些运气做一个url重写。这可以通过web.config或httpmodule轻松完成。

看起来您仍然需要使用下面提到的空间或IIS修补程序来处理+字符问题,但为了将来的某些灵活性,您可以随时包含将URL重新映射到文件的URL重写。

<httpModules> 
     <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    </httpModules> 

    <rewriter> 
    <rewrite url="~/cats dogs/Default.aspx" to="~/MyRealFile.aspx" /> 
    </rewriter> 
1

只需在文件夹名称中添加一个空格:“猫狗”。

空格字符使用加号字符进行编码,所以当服务器看到加号字符时,它将获得带有空格的文件夹。

+0

这是过去的样子,但它在大多数现代浏览器和默认IIS设置中都不起作用。 – Thorarin 2010-01-06 15:54:34

7

IIS 7.0 Breaking changes for ASP.NET 2.0 applications in Integrated Mode

下面是从页,这说明解决方法/修复相关的摘录。

请求限制和URL处理 以下变化导致了如何IIS 过程传入请求及其 网址,由于 附加限制。

11)包含在路径(未 查询字符串)未编码 “+”字符请求的URL被默认

拒绝你将得到HTTP错误404.11 - 未找到:请求滤波 模块被配置为否认请求 包含双重转义 序列。发生

此错误的原因IIS是由 默认配置为拒绝尝试 到双重编码的URL,这通常代表 试图执行一个 规范化攻击。

解决方法:

1)需要在URL路径 的“+”字的使用 可以通过设置 禁用此验证的应用程序在 的 system.webServer /安全/的requestFiltering的allowDoubleEscaping属性 配置部分中的 应用程序的web.config。然而, 这可能使你的应用更加 容易受到恶意网址:

<system.webServer> 
    <security> 
      <requestFiltering allowDoubleEscaping="true" /> 
    </security> 
</system.webServer> 
相关问题