我希望我的网站能够为动态内容创建搜索引擎优化的链接(而不是通过查询字符串定位数据)。所以:
mysite/SomeModifiableNname.aspx代替
mysite/DynamicContent.aspx?entryID=2345。
除了重定向请求的智能404处理程序或IIS中的自定义mime类型处理程序之外,在ASP.NET中是否有一个很好的解决方案?
请记住,必须能够在运行时更改页面文件名。
答案 0 :(得分:3)
您可以使用 HttpHandler ,如here所示。
答案 1 :(得分:2)
这是一个广泛的主题,通常称为URL重写......
有几种方法可以实现这一目标。我建议查看IIS重写模块。
您可能还应该调查为MVC开发的URL路由功能,并在ASP.NET 3.51中提供
更新:我希望我更了解你的意图。最后一句让我困惑。
答案 2 :(得分:0)
我过去用UrlRewrite.Net做过这个。在IIS7中还有一个内置的工具
答案 3 :(得分:0)
感谢大家的想法。根据提供的信息,我发现了我认为我需要的解决方案:
在Global.asax(或通过HttpModule)中,监听BeginRequest事件并在那里应用Context.Rewrite路径:
void Application_BeginRequest(object sender, EventArgs e)
{
string fullOrigionalpath = Request.Url.ToString();
if (fullOrigionalpath.ToLower().Contains("/Games".ToLower()))
{
Context.RewritePath("Default.aspx?id=Games");
}
}
然后,在处理这些请求的页面的OnPreInit方法中,需要再次应用重写路径,以便PostBacks能够正常工作:
protected override void OnPreInit(EventArgs e)
{
base.OnPreInit(e);
if (Request.QueryString["id"] == null)
return;
if (Request.QueryString["id"].ToLower().Equals("games"))
Context.RewritePath("Games", "", "id=Games");
}
使我的工作比我遇到的许多URL重写模块更好的关键是路径可以是动态的。也就是说,创建的URL可以是数据驱动的。