2

I have a web project that had UrlRewriter.NET installed and working fine on .NET 3.5 locally.

I then upgraded it to .NET 4.0 and this continued to work on my local PC in Visual Studio 2010.

When I moved this .NET 4.0 project to my server the url rewriting stopped working.

Here is my web.config (condensed for readability here)

<?xml version="1.0"?>
<configuration> 
   <configSections>
      <section name="rewriter" requirePermission="false" type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
   </configSections>

   <system.web>

   </system.web>
   <rewriter>
      <rewrite url="~/Neat-Url" to="~/Ugly-Url.aspx?id=1"/>
   </rewriter>
   <system.webServer>
       <validation validateIntegratedModeConfiguration="false"/>
       <modules runAllManagedModulesForAllRequests="true">
           <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule"/>
       </modules>
    </system.webServer>
</configuration>

When put on the server it just returns a 404.

Interesting discovery. If I create a directory called /Neat-Url, the url rewriting starts working again and redirects to /Ugly-Url.aspx?id=1

Note: Yes I realize that .NET 4.0 has it's own url rewriting and I also have existing code that works with UrlRewriter.

So am I doomed because it is a server configuration issue or is there a way I can work around it?

[UPDATE]: Ok so I have determined something else. The url rewriter won't work unless the file or directory actually exists.

For example. If I want to redirect /Directory1 to /Directory1.aspx, /Directory1 must exist, then it all works fine.

If I want to redirect /File1.aspx to /File2.aspx this also works but File1.aspx must exist on the file system.

Otherwise I continue to get a 404. This seems solvable via .NET and has something to do with the web.config as calling upon File1.aspx gets passed to the runtime and gets an asp.net 404. Calling a directory just gets a web host 404.

[UPDATE 2]: I removed the

<httpModules> 

section from my web config, then added

<identity impersonate="false"/>

Then also changed validateIntegratedModeConfiguration="true". Still the same problem but at least is validates in Integrated Mode now.

[UPDATE 3]: I am now trying ManagedFusion yet still running into errors, but it seems more like a configuration error on my part rather than server support. I raised another question ManagedFusion Url Rewriting not working.

Hopefully that will solve my problems.

7
  • A question that hasn't been answered in 10 minutes on Stackflow. I must be in trouble :) Commented Feb 3, 2011 at 8:50
  • Why not just use the builtin rewriter provided by Microsoft? Commented Feb 4, 2011 at 5:07
  • I disagree with a random closing and down voting of this question. Yes it is 5 years old, but the problem still exists just on older technology. The Off-Topic flag on this question seems invalid as it can be reproduced and it was not due to a simple typographical error. The downvote also seems completely unjustified. Commented Aug 20, 2016 at 1:42
  • @AdamPedley, FYI: The [godaddy] tag is being burniated meta, that is why it has received attention- Commented Aug 21, 2016 at 23:29
  • thanks @PetterFriberg - that explains its attention. Happy with the tag going but disappointed at the actions being taken regarding pre-existing questions with valid problems and answers. Commented Aug 21, 2016 at 23:35

7 Answers 7

3

What kind of application pool you are using? UrlRewrite does not work with Classic Application Pool for .NET 4.0, your application pool has to be configured for .NET 4.0 Pipeline mode only.

Sign up to request clarification or add additional context in comments.

2 Comments

It's using the integrated pipeline (not classic)
Switching from classic to pipeline caused UrlRewrite to kick in for me on Godaddy (.net4, iis7), when it wasn't previously playing ball.
1

change rewrite module to Url Rewrite Module. I had same problem with Godaddy, so changing is solved my problem.

Comments

1

You can use alternate rewriters that work with .net 4.0 and GoDaddy. Such as the Managed Fusion URL Rewriter and Reverse Proxy.

My guess is that some permission related to GoDaddys medium trust config is causing the inconsistencies you are seeing.

1 Comment

It seems like not all requests are been passed to the ASP.NET runtime which is why the URL rewrite doesn't work unless there is a directory or file there.
0

It seems as though URL Rewriter.NET is not going to play nicely.

It is most likely due to the fact my application runs in a virtual directory.

I did manage to get Microsoft's URL rewriting working (not Url Routing as that also has issues with virtual directories).

So that is what I will use.

I think it is fair to say URLRewriter.NET has had it's day.

Comments

0

This answer got UrlRewriter to work on my GoDaddy account:

Can Intelligencia.UrlRewriter be made to work in IIS7?

The solution is to add this to your web.config:

<system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true">
    <add name="UrlRewriter" 
      type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
  </modules>
</system.webServer>

Comments

0

@gilly3 had the answer right! I've just tested it on my own system (IIS 8, .NET 4.5 framework)

Originally I had this in my web.config, which has been working for .NET framework 3.5 and below

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>

so I changed it to below, and it works!

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
       <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter" />
    </modules>
</system.webServer>

Comments

0

Actually what you want is this. Make sure this setting is false because otherwise after URL Rewriting rewrites the URL, the .NET application might re-route it back.

   <system.webServer>
       <modules runAllManagedModulesForAllRequests="true">

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.