【问题标题】:automatically rewrite URLs in ASP.NET在 ASP.NET 中自动重写 URL
【发布时间】:2012-06-05 16:07:08
【问题描述】:

我使用 VS2010,C# 开发一个 ASP.NET 网站,我的客户希望我的页面是这样的:

mysite.com/customer(实际上他们称之为 mysite/customer/default.aspx)

所以我为每个客户手动创建了几个文件夹,并在文件夹中插入了一个 default.aspx 文件,以便用户可以通过键入 mysite.com/customer 来查看客户页面

有没有更好的方法来执行这个场景?我不想拥有 mysite.com/customer1.aspx,我想要拥有 mysite.com/customer1,无论如何我可以删除文件夹(及其包含 default.aspx 文件)并使用我的客户数据库自动生成一些东西?

我应该使用 URL 重写吗?无论如何我可以创建页面 mysite.com/customer1.aspx,并且用户可以通过键入 mysite.com/customer1 来查看它?

我认为可以在 web.config 中重写 URL,但我不想在 web.config 中手动进行,因为我的页面每天都会增加

谢谢

【问题讨论】:

    标签: asp.net url-rewriting


    【解决方案1】:

    如果您真的想在代码中而不是在配置中执行此操作,您可以使用 HttpContext 的 RewritePath 方法在 Application_BeginRequest 中自己重写路径

    例如(这是一个非常简化的示例),如果您的 aspx 位于根目录的子文件夹中,它可能会像这样:

    protected void Application_BeginRequest(Object sender, EventArgs e)
    {
        if (HttpContext.Current.Request.Path.StartsWith("/customer"))
            HttpContext.Current.RewritePath("/customer/whatever.aspx");
    }
    

    注意:这会忽略任何必须提取和重新添加的查询字符串,如果您希望它不区分大小写,您也必须处理它。

    【讨论】:

    • 哦,谢谢,我认为使用代码给了我更多的灵活性,你能给我一些示例吗?
    • 我认为在代码中而不是从配置值中执行此操作不太灵活,但我很高兴通过示例更新我的答案
    【解决方案2】:

    基于配置的 URL 重写是您的最佳选择。看这里:http://msdn.microsoft.com/en-us/library/ms972974.aspx。重写是基于模式的,因此您所描述的(mysite.com/customer1.aspx 到 mysite.com/customer1)是可能的。

    【讨论】:

      【解决方案3】:

      ASP.NET 路由是最好的方法,http://msdn.microsoft.com/en-us/library/cc668201.aspx

      我已经编写了一个导航项目,它也会对您有所帮助,http://navigation.codeplex.com/ - 如果您对此感兴趣并需要任何帮助,请告诉我。

      【讨论】:

        【解决方案4】:

        如果您(实际上)愿意尝试 url 重写,那么为什么不尝试ASP.net 4 Web Pages

        • 您可以在 C# (cshtml) 或 VB (vbhtml) 中执行 Razor 语法。
        • 默认情况下,您会获得“漂亮的 url”(没有配置也没有 global.asax 路由)
        • 您可以使用 Visual Studio 甚至 WebMatrix

        可能的挑战:

        • (新)语法 - 但并不难 - 主要是 @ 而不是 <%=..%>
        • 如果您更熟悉 ASP.Net 控件,那么它可能会比简单得多的控件更难...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-05-07
          • 2014-10-01
          • 2011-08-02
          • 2010-10-05
          • 2011-08-03
          • 2011-10-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多