url编码是否会使IIS 7接受最初包含双转义序列的URL?

时间:2012-02-16 08:17:25

标签: unit-testing iis-7 encoding urlencode url-encoding

我得到“请求过滤模块配置为拒绝包含双转义序列的请求。”在请求带有文件名加号的图像时。我宁愿不要关闭这个功能。相反,我希望我能正确编码我的网址。问题是我不想测试这个(开发中),我不确定IIS 7是如何想要我的网址看的?你认为这会解决我的问题吗?

        const string fileName = "test+test.jpg";

        string urlEncoded = HttpUtility.UrlEncode(fileName);
        Assert.That(urlEncoded, Is.EqualTo("test%2btest.jpg"));

1 个答案:

答案 0 :(得分:0)

不幸的是,它不会。 IIS7将解码您的URL,看到您编码加号,然后仍然抛出双转义序列错误。如果你真的想使用加号,我认为你必须允许双重Url编码。

Here是来自IIS团队开发人员的博客文章,详细说明了他们选择不允许“+”符号被接受的一些原因。

另一种选择,您可能已经想到这一点,就是您可以提出自己的转义序列来替换IIS无法识别的加号。然后,您需要编写自己的代码来检查转义序列并将其重写为“+”。

如果您想了解整个检查系统如何在IIS7和ASP.Net中运行的更多细节,您可以看到我对类似问题here的回答。

希望这有帮助。