If your rss feed reader just went crazy over my site, I apologize. I recently moved my blog from the application root to a subdirectory in order to allow other .NET applications to run properly in other subdirectories.
In order to make the imaginativeuniversal site still work with searches that expect to find content at the old location, I had to create an HttpHandler to redirect page requests to the “/blog” subdirectory, including requests for the rss feed. This had some unintended results, such as republishing all the old rss entries.
This was a migration of a DasBlog application to another directory. Should anyone be interested, this is how I wrote the HttpHandler CategoryHandler to redirect all requests to the root to my “/blog” subdirectory:
using System;
using System.Web;
using System.Web.UI;
namespace IUHandlers
{
public class CategoryHandler : IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
string path = context.Request.Path;
string syndicationPath = “/SyndicationService.asmx”;
if (path.IndexOf(“/blog”) == -1)
{
int lastSlash = path.LastIndexOf(‘/’);
string pre = path.Substring(0, lastSlash);
string post = path.Substring(lastSlash);
if (path.IndexOf(syndicationPath
,StringComparison.CurrentCultureIgnoreCase) > -1)
{
post = syndicationPath + post;
}
context.Response.Redirect(“~/blog” + post);
}
}
}
}
I compiled my handler and placed it in the bin folder at the root of my site. I then added a web.config file to the root with this setting:
<httpHandlers>
<add verb=“GET“ path=“*.asmx“ type=“IUHandlers.CategoryHandler, IUHandlers“/>
<add verb=“GET“ path=“*.aspx“ type=“IUHandlers.CategoryHandler, IUHandlers“/>
This allows me to run other ASP.NET applications beneath the root directory of my site as long as I remember to add the following two settings to each of their web.config files:
<httpHandlers>
<remove verb=“GET“ path=“*.asmx“/>
<remove verb=“GET“ path=“*.aspx“/>
I’m not sure if it’s the most elegant solution, but it seemed to do the job.