【问题标题】:Why does URL Rewrite module makes CLR stop in IIS 8.5?为什么 URL 重写模块使 CLR 在 IIS 8.5 中停止?
【发布时间】:2019-09-18 00:01:44
【问题描述】:
  • Windows 服务器 2012 R2
  • IIS 8.5
  • 简单的单文件 index.html 网站
  • 在应用程序池中选择 .NET CLR 4.0

在这一步网站工作。然后我为 IIS 安装 URL 重写模块。不要为 URL Rewrite 添加任何规则,但是当我在浏览器中打开网站时,该网站的应用程序池停止。

错误信息:

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 Rewrite 模块卸载后,网站池开始正常工作。

为什么 URL Rewrite 模块不让 CLR 停止?

更新

事件日志消息:

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

然后我添加到 applicationHost config 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

【问题讨论】:

  • 检查事件日志消息
  • @Rich-Lang 在问题中添加了日志消息
  • AppOffline 出现服务不可用错误(HTTP 错误 503)。该服务不可用,因为应用程序错误导致应用程序脱机。是否有任何事件日志消息?
  • @Rich-Lang 在问题中添加了 EventLog 消息
  • 为什么要将该配置添加到配置文件中?所有这些都应该自动处理。此外,它之前显然有一些 Rewrite 配置,因为它知道 DLL 会给出错误。事件日志的“数据”部分是什么?另外,你是如何安装 URL Rewrite 的?

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


【解决方案1】:

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

对我来说,有效的解决方案是替换“rewrite.dll”。在我们的另一台服务器中,它工作正常,它们是在 2017 年安装的。所以我只是从该服务器复制了“rewrite.dll”并将其替换到我的新服务器上。

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

顺便说一句,您需要在替换 dll 并重新启动之前停止 IIS。

【讨论】:

    【解决方案2】:

    我也有类似的问题。安装visual c++ 2013 redistributable 和visual c++ 2015 redistributable URL rewrite 2.1 后运行。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 在问题中添加了 EventLog 消息。如果我理解这一点,我没有任何入口点,因为它只是一个没有应用程序的静态 .html 文件。
      • 添加前置条件只会使其加载到 32 位应用程序,但不会解决问题。我认为您添加了一个前提条件,但在 web.config 或 applicationhost.config 中仍然有一些重写规则,这导致了后一个 500 错误。事件日志中的数据编号是多少,它将给出失败操作的实际错误代码。另外,您是如何通过 IIS 中的 Web 平台安装程序或作为下载的独立可执行文件安装 url rewrite 的,并且是否安装了正确的 msi?
      【解决方案4】:

      我遵循 Alexander Borisov 的解决方案,它在安装 Visual C++ 2015 Redistributable 后对我有用。可以从here下载

      【讨论】:

      • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 2012-06-01
      • 1970-01-01
      相关资源
      最近更新 更多