【发布时间】:2009-09-03 16:22:21
【问题描述】:
我在asp.net 3.5下实现了url路由,代码如下:
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
string virtualPath = requestContext.RouteData.Values["page"].ToString();
//if virtualpath doesn't end in aspx, then it's just a directory path loading
//default.aspx by default.
if (!virtualPath.EndsWith(".aspx") && !virtualPath.EndsWith(".txt"))
{
virtualPath += "default.aspx";
}
return BuildManager.CreateInstanceFromVirtualPath(
virtualPath,
typeof(Page)) as Page;
}
所以我可以拥有像 www.mysite.com/en/products/ 这样的网址,其中 /en/ 不是物理目录, default.aspx 位于 products/ 目录下并自动加载。
它适用于除根以外的所有内容:www.mysite.com/en/。此网址失败。 www.mysite.com 下存在一个 default.aspx,它确实适用于 www.mysite.com/en/default.aspx。但是,在访问 www.mysite.com/en 时出现错误,它不是 404。这是在进行实际路由时。当它试图从 routedata 值中检索“page”属性时,它在代码的第一行失败。它只是从找不到对象引用崩溃。我在某处读到这是根目录的 asp.net 问题。你对此有什么想法吗?
【问题讨论】: