URL重写出站规则IIS7

时间:2010-09-15 00:08:20

标签: asp.net iis url-rewriting iis-7

尝试使用此模块重写URL,但是在尝试点击URL时遇到以下错误。在网上寻找答案,但不确定解决这个问题的最佳方法是......任何想法?

  

HTTP错误500.52 - URL重写模块错误。   当内容为。时,无法应用出站重写规则   HTTP响应被编码(“gzip”)。**

     

IIS收到了请求;但是,在处理请求期间发生了内部错误。此错误的根本原因取决于哪个模块处理请求以及发生此错误时工作进程中发生的情况。

     

IIS无法访问网站或应用程序的web.config文件。如果NTFS权限设置不正确,则会发生这种情况。

     

IIS无法处理网站或应用程序的配置。

     

经过身份验证的用户无权使用此DLL。

     

请求映射到托管处理程序,但未安装.NET可扩展性功能。

4 个答案:

答案 0 :(得分:16)

我已尝试过aracntido的评论,但它似乎在IIS7中不起作用。它在使用IIS7.5的服务器上运行良好,所以我不确定是否有解决方法。

修复方法是在web.config中使用它:

<system.webServer>
  <urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false" />
</system.webServer>

答案 1 :(得分:6)

这是设计的,这意味着当HTML可用于URL Rewrite模块时,HTML已被压缩,因此它无法重写它,因为它必须首先解压缩,重写它然后再次压缩它这是太多的处理器能力。如果是动态内容,请在压缩之前尝试重写它。

在服务器级别(InetMgr)的“模块”中的URL重写模块之后移动动态压缩模块。禁用规则的“日志重写URL”(默认),否则模块将尝试成为管道中的最后一个。

静态压缩与出站重写不兼容。

答案 2 :(得分:1)

虽然禁用静态和动态压缩很有效,但此方法不适用于*.axd个文件。这些文件是客户端资源,如js,Ajax等。 阅读有关axd文件HERE的更多信息。

因为这些文件是自动压缩的。请阅读HERE了解原因!

让它们工作的更简单方法是发送设置Accept-Encoding标题为空的请求!这可以通过两种方式实现:

  1. [BAD] 更改您的Firefox设置HOW?
  2. [NICE] 设置入站规则以清除标头中的Accept-EncodingHOW?

答案 3 :(得分:0)

在IIS 7.0中关闭静态压缩(对我的情况不必要)修复了一个类似的问题,其中URL会加载,但页面刷新会产生基本错误500.

我在网址中添加了index.html,并将错误细化为“HTTP错误500.52 - 网址重写模块错误”。当HTTP响应的内容被编码(“gzip”)'错误时,不能应用出站重写规则。

感谢aracntido指出这一点,你帮我解决了问题。