views:

1542

answers:

3

When create a new ASP.NET MVC project in Visual Studio 2008, there is a Default.aspx page by default. It has one line

<%-- Please do not delete this file. It is used to ensure that ASP.NET MVC is activated by IIS when a user makes a "/" request to the server. --%>

In its Page_Load function, it just redirects to "/" to go through the routing procedure.

    public void Page_Load(object sender, System.EventArgs e)
    {
        HttpContext.Current.RewritePath(Request.ApplicationPath);
        IHttpHandler httpHandler = new MvcHttpHandler();
        httpHandler.ProcessRequest(HttpContext.Current);
    }

I tried to remove Default.aspx and it turns out that the default URI "http://localhost:2574/" is still accessible. So, why bother to have such Default.aspx?

+6  A: 

What's happening here, is that the Url requested (which was Default.aspx) is being re-written to the application root "/" and then transferred off of the Webform HTTP handler and onto the MvcHttpHandler. A request for "/" will match the Default route entry (show further down)... eventually sending us onto one of the route controllers.

useful link here

mapache
Thanks. The link (http://www.58bits.com/blog/2008/09/29/ASPNetMVCAndRoutingDefaultaspx.aspx) actually explains that Default.aspx can be removed and it still works.
Morgan Cheng
+6  A: 

Older versions of IIS need a startup document and it also gives you something to right-click on to get the "View in Browser" option.

Todd Smith
what is "older version"? IIS 6?
Morgan Cheng
A: 

Glad you found it useful... took me a while to figure it out as well.

Anthony Bouch