CodeMonkey1313
CodeMonkey1313

Reputation: 16011

URL Rewriter.NET web.config node issue

I'm using URL Rewriter.NET (which I'm liking a lot, by comparison to URL Rewriting.NET - more versitile it seems, don't get me wrong, I like URL Rewriting.NET, but it didn't seem to satisfy the need, given what I know of the tool). I'm trying to use the default-documents node to redefine the default documents for the site. I've tried adding it to the rewriter node, but I get a web.config error

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>

Has anyone used this tool in the past, and does anyone know where to put this node (or proper usage)?

EDIT:

I tried the suggestion below, but it didn't seem to work quite right. Here is what is in my extra config file (this is the only contents in the config file)

<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>

Upvotes: 0

Views: 2476

Answers (3)

CodeMonkey1313
CodeMonkey1313

Reputation: 16011

I believe the solution to this problem is the version of .NET I'm using on the website. I'm using the 2.0 runtime and the dll was built for the 1.1 runtime. I saw on the website that the 2.0 runtime is still in RC (since mid 2007), and hence I will not be using it on this production website. Instead, I figured out how to use the URL Rewriting.NET to accomplish the same goal.

I added the following rule:

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

This causes a HTTP 200 response on the myvirtualpage.aspx, instead of a rewrite. The eventual goal is to have the mydestinationpage.aspx?id=9 have a 301 to myvirtualpage.aspx, which would then serve up the myvirtualpage.aspx with a 200 HTTP response. That's a bit off though.

Upvotes: 0

Moose
Moose

Reputation: 5422

This snippet works for me:

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

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

Edit: Be sure that where you added the wildcard application map, you also unchecked "Verify that file exists". If you don't do this, default-documents won't do anything.

Another edit: Found the installation step that illustrates the "Verify that file exists" checkbox. See step 8 here:

Upvotes: 1

SirDemon
SirDemon

Reputation: 1758

I've used urlrewriter before, and had some problems with actually setting a default document as well. However, eventually we got it (and other minor annoyances) to work by moving the urlrewriter config to different config file than web.config.

<rewriter configSource="urlrewriter.config"/>

Remember that you also have to disable default documents in IIS for the urlrewriter to work correctly. That caused a bunch of annoying problems as well.

EDIT: Don't forget to add this line to your config sections in web.config

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

Hope this helps.

Upvotes: 1

Related Questions