我正在为我的主要类别页面执行UrlRewrite。 转换:
www.mysite.com/Category.aspx?id=2
到
www.mysite.com/Dogs
为了做到这一点,我正在使用Global.asax
的{{1}}执行以下代码(伪代码):
Application_BeginRequest
我的问题是:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (IsCategoryUrl())
{
string CategoryName = ParseCategoryNameFromUrl(Request.Url);
string CategoryId = GetCategoryIdByNameFromDB( CategoryName );
Context.RewritePath("/Category.aspx?id=" + CategoryId);
}
}
指令,这在<%@ Page %>
上是不可能的。还有其他解决办法吗?提前致谢。
答案 0 :(得分:2)
缓存数据库查询没有任何问题。对于每个类别名称,您可以将ID存储在字典中,作为在一段时间后过期的示例。在这种情况下,这将删除DB调用。举个例子:
Dictionary<string, int> categoryIdLookup;
这可以存储在HTTP缓存中并检索,如果它是null(即它从未被添加或已经从缓存中删除)构建字典,查找正确的Id然后进行重写。