为什么URL重写模块会使CLR在IIS 8.5中停止?

时间:2019-04-29 11:06:56

标签: .net iis clr pool url-rewrite-module

  • Windows Server 2012 R2
  • IIS 8.5
  • 简单的一文件index.html网站
  • 在应用程序池中选择.NET CLR 4.0

在此步骤中,网站正常运行。然后,我为IIS安装URL重写模块。不要为URL重写添加任何规则,但是当我在浏览器中打开网站时,该网站的应用程序池将停止。

错误消息:

HTTP Error 503. The service is unavailable.

来自

的日志
%SystemDrive%\Windows\System32\LogFiles\HTTPERR

#Software: Microsoft HTTP API 2.0
#Version: 1.0
#Date: 2019-04-29 13:34:12
#Fields: date time c-ip c-port s-ip s-port cs-version cs-method cs-uri sc-status s-siteid s-reason s-queuename
2019-04-29 13:34:12 127.0.0.1 49200 127.0.0.1 80 HTTP/1.1 GET / 503 5 AppOffline test.com29 13:34:12 127.0.0.1 49200 127.0.0.1 80 HTTP/1.1 GET / 503 5 AppOffline test.com

此目录没有日志文件:

%SystemDrive%\inetpub\logs\LogFiles

使用一个卸载URL重写模块时,网站池开始正常工作。

为什么URL重写模块不能使CLR停止?

  

更新

事件日志消息:

The Module DLL C:\Windows\system32\inetsrv\rewrite.dll failed to load.  The data is the error.

然后我将其添加到applicationHost配置bitness32

C:\Windows\System32\inetsrv\config\applicationHost

<add name="RewriteModule" image="%SystemRoot%\system32\inetsrv\rewrite.dll" preCondition="bitness32" />

使用bitness32不会停止池,但是我在浏览器中收到此错误:

HTTP Error 500.0 - Internal Server Error
Module "RewriteModule" could not be found

3 个答案:

答案 0 :(得分:1)

在事件日志中,我发现了相同的消息。即模块DLL C:\ Windows \ system32 \ inetsrv \ rewrite.dll无法加载。数据就是错误。

对我来说,有效的解决方案是替换“ rewrite.dll”。在我们其他服务器中的2台中,它运行良好,并于2017年安装。因此,我刚刚从该服务器复制了“ rewrite.dll”,并将其替换在新服务器上。

对我来说,该dll的旧版本(v7.1.1952.0)有效,但是最新设置附带的新版本(v7.1.1993.2351)不起作用。

顺便说一句,您需要先停止IIS,然后再替换dll,然后重新启动。

答案 1 :(得分:0)

您在应用程序事件日志中是否有任何条目指示您导致崩溃的原因,您还可以在调试诊断程序中设置崩溃规则,以在调试诊断程序中收集自动故障转储,然后对其进行分析,如果事件日志对您没有太大帮助,则将为您提供更多见解。 %SystemDrive%\ inetpub \ logs \ LogFiles将没有文件,并且可以预期,因为该网站已经崩溃并被禁用,并且请求甚至没有到达该网站

答案 2 :(得分:0)

我有一个类似的问题。安装Visual c ++ 2013可再发行组件和Visual c ++ 2015可再发行组件URL重写2.1之后。