URL Rewriter.NET web.config节点问题

时间:2009-03-26 14:30:00

标签: asp.net url-rewriting urlrewriter.net

我正在使用URL Rewriter.NET(我很喜欢,与URL Rewriting.NET相比 - 看起来更多的是,不要误会我的意思,我喜欢URL Rewriting.NET,但它考虑到我对该工具的了解,似乎并不满足需要。我正在尝试使用default-documents节点重新定义网站的默认文档。我已经尝试将它添加到重写器节点,但是我收到了web.config错误

Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 

Parser Error Message: The element 'default-documents' is not allowed.

Source Error: 


Line 187:
Line 188:   <rewriter>
Line 189:       <default-documents>
Line 190:           <document>default.aspx</document>
Line 191:           <document>index.aspx</document>

过去有没有人使用过此工具,有没有人知道放置此节点的位置(或正确用法)?

编辑:

我尝试了下面的建议,但似乎没有做得很好。这是我的额外配置文件(这是配置文件中的唯一内容)

<rewriter>
        <rewrite url="^(/.+(\.gif|\.png|\.jpg|\.ico|\.pdf|\.css|\.js)(\?.+)?)$" to="$1" processing="stop" />
        <default-documents>
            <document>default.aspx</document>
            <document>index.aspx</document>
        </default-documents>
</rewriter>

3 个答案:

答案 0 :(得分:1)

之前我使用过urlrewriter,并且在实际设置默认文档时遇到了一些问题。但是,最终我们通过将urlrewriter配置移动到与web.config不同的配置文件来获得它(以及其他轻微的烦恼)。

<rewriter configSource="urlrewriter.config"/>

请记住,您还必须在IIS中禁用默认文档才能使urlrewriter正常工作。这也引发了一系列恼人的问题。

编辑:不要忘记将此行添加到web.config中的配置部分

<section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>

希望这有帮助。

答案 1 :(得分:1)

这段代码对我有用:

    <configSections>
        <section name="rewriter" 
                 requirePermission="false" 
                 type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" 
        />
    </configSections>

    <rewriter>
        <default-documents>
            <document>index.aspx</document>
        </default-documents>
    </rewriter>

编辑:确保添加通配符应用程序映射的位置,同时取消选中“验证文件是否存在”。如果不这样做,默认文档将不会执行任何操作。

另一个编辑:找到说明“验证文件存在”复选框的安装步骤。请参见步骤8 here

答案 2 :(得分:0)

我相信这个问题的解决方案是我在网站上使用的.NET版本。我正在使用2.0运行时,而dll是为1.1运行时构建的。我在网站上看到2.0运行时仍在RC中(自2007年中期以来),因此我不会在这个生产网站上使用它。相反,我想出了如何使用URL Rewriting.NET来实现相同的目标。

我添加了以下规则:

<add name="Redirect54" virtualUrl="~/content/myvirtualpage.aspx"
    rewriteUrlParameter="ExcludeFromClientQueryString"
    destinationUrl="~/content/mydestinationpage.aspx?id=9"
    redirect="None"   
    ignoreCase="true"  />

这会导致myvirtualpage.aspx上的HTTP 200响应,而不是重写。最终的目标是让mydestinationpage.aspx?id = 9有一个301到myvirtualpage.aspx,然后它将提供带有200 HTTP响应的myvirtualpage.aspx。这有点过了。