自动重写ASP.NET中的URL

时间:2012-06-05 16:07:09

标签: asp.net url-rewriting

我使用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中手动执行,因为我的页面会每天增加

感谢

4 个答案:

答案 0 :(得分:2)

如果你真的想在代码中而不是在配置中这样做,你可以使用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");
}

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

ASP.NET路由是执行此操作的最佳方式,http://msdn.microsoft.com/en-us/library/cc668201.aspx

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

答案 3 :(得分:1)

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

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

可能的挑战:

  • (新)语法 - 但并不困难 - 主要是@而不是<%=..%>
  • 如果你对ASP.Net控件感觉更舒服,那么它可能比简单更简单... ...