在ASP.NET Development Server下运行时,WebForms中的ASP.NET路由不处理非ASP扩展

时间:2012-03-01 14:35:33

标签: asp.net asp.net-routing

我在Visual Studio 2010下创建了一个默认的WebSite。 在Global.asax中添加了一个简单的路由:

routes.MapPageRoute("AboutRoute", "about", "~/About.aspx");

当我启动 ASP.NET Development Server 并浏览到“http:// localhost:6521 / WebSite1 / about”时,显示404

但是当我将about更改为about.axd时(注意.axd扩展名)并浏览到/WebSite1/about.axd

我需要在web.config中更改什么才能使Development Server像IIS一样工作(正确处理无扩展名的URL)?

1 个答案:

答案 0 :(得分:0)

  

当我启动ASP.NET Development Server并浏览到时,显示404   的 “http://本地主机:6521 /的WebSite1 /约”

我准备了一个示例Web应用程序,它给了我关于我们和Default.aspx页面。 在default.aspx页面中,我编写了以下代码....

Default.aspx.cs代码

protected void Page_Load(object sender, EventArgs e)
{
    Response.Redirect(Page.GetRouteUrl("AboutRoute", 
                        new { ID = "Evgenyt" }));
}

Global.asax.cs代码

public class Global : System.Web.HttpApplication
{
    private void RegisterRoute(RouteCollection Routes)
    {
        Routes.MapPageRoute("AboutRoute", "about/{ID}", "~/About.aspx");

    }

    void Application_Start(object sender, EventArgs e)
    {
        RegisterRoute(RouteTable.Routes);
        // Code that runs on application startup

    }
}

然后我发布了代码并在IIS上进行了配置。现在,当请求到达IIS时,它将消息路由到aspnet_isapi.dll ISAPI扩展。 ISAPI扩展然后加载default.aspx页面,执行它,并将其呈现的HTML返回到IIS,最后IIS然后将其发送回客户端。

结果网址

http://localhost/Demo/about/Evgenyt

实际网址

http://localhost/Demo/AboutUs.aspx


  

我需要在web.config中进行哪些更改才能使Development Server正常工作   正如IIS那样(正确处理无扩展名的URL)?

Reference - 与URLMapping不同,URLRouting不会发生在Web.config中。它可以使用代码实现。您可以使用Glogal.asax.cs文件中的代码中提到的Application_Start Event来注册应用程序的所有路由。要注册路由,您可以在RouteTable命名空间中使用System.Web.Routing类。