如何知道安装了哪个版本的IIS7 URL Rewrite模块

32

我在IIS7中创建了一条重写规则,其中在条件元素中使用了trackAllCaptures="false"属性,并使用了outboundRules。在我的测试系统上一切都正常,但是当我将这些规则部署到GoDaddy时,出现了错误:

Unrecognized attribute 'trackAllCaptures' 

如果我包含了outboundRules节点,服务器会返回500错误。我与他们的支持人员交流过,他们坚称支持URL Rewrite模块的2.0版本。我的问题是如何验证或向他们传达如何检查此模块的版本?除非尝试安装,否则我找不到任何方法来检查版本。

我正在尝试为ASP.Net应用程序重写URL,而不是WordPress,以便从URL中删除子文件夹,这是在其多域名托管中普遍存在的问题。我使用的示例位于此处:http://weblogs.asp.net/owscott/archive/2010/05/26/url-rewrite-multiple-domains-under-one-site-part-ii.aspx


我已经安装了日期为6/30/2010的2.0版本,它位于%SystemRoot%\system32\inetsrv\rewrite.dll中,文件/产品版本字符串为7.1.871.0,因此也许可以检查一下你的rewrite.dll版本? - Jim O'Neil
你知道自己是否在完全信任或部分信任的环境中运行吗? - Kev
我正在运行在中等信任环境下。trackAllCaptures或outboundRules需要完全信任吗? - blkbam
不,我有一个想法,可以加载shell32来检查rewrite.dll文件的文件版本/产品版本属性。但是,如果您处于中等信任环境中,则可能无法正常工作。 - Kev
我刚刚和他们通了电话,他们声称支持2.0版本,但正在调查使用属性时出现错误的原因。话虽如此,既然你已经回答了我的问题,我会将此事标记为关闭。感谢你的帮助。 - blkbam
2个回答

37

Url Rewrite的二进制文件位于:

%SystemRoot%\system32\inetsrv\rewrite.dll

Url Rewrite 1.1的文件版本号为7.1.490.43
Url Rewrite 2.0的文件版本号为7.1.761.07.1.871.0(可能还有其他版本,但这是我所知道的两个不同版本)。

如果您无法验证版本号,请尝试在简单的网页中运行以下代码:

Assembly a = Assembly.Load("Microsoft.Web.Iis.Rewrite, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35");
Response.Write(a.FullName);
如果安装了UrlRewrite 2.0,你会看到类似以下的内容:
Microsoft.Web.Iis.Rewrite, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
如果没有安装,则会抛出异常:

无法加载文件或程序集“Microsoft.Web.Iis.Rewrite、Version=1.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。

你还可以将用户引导至此文档页面:

跨条件追踪捕获组

本段话很清楚地表明,trackAllCaptures 是2.0特定的设置,如果它不能工作,则一定没有安装2.0:

在URL Rewrite模块2.0中,可以更改如何索引捕获组。将trackAllCaptures设置为<conditions>集合上的启用状态可使所有匹配条件的捕获组通过反向引用可用。


当我尝试运行你的代码示例时,它在本地可以正常工作,但在加载到他们的服务器上时失败了,这正如我们所预料的。我即将与他们联系,看看能否从他们那里得到一个明确的答复。 - blkbam
我遇到了同样的问题,并一直在联系Godaddy支持团队告知他们。今晚他们创建了一个重要的工单来解决这个问题。我觉得自己取得了一些成就,但还有待验证。尽管我认为他们并不打算这样做,但trackAllCaptures属性仍然无法识别。 - rwkiii
你是认真的吗?这些都只是为了检查版本吗? - Simon Borsky
@simonbor 不要打信使 :) - Kev

7

当然,@Kev的答案帮助我确定版本,但似乎还有另一种方式。我只是检查控制面板>已安装的程序。在那里我找到了版本安装。如果已安装,则可以检查版本并与@Kev的答案进行比较,以确定它是否为版本1或2。

重写模块控制面板图片


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接