我正在使用以下路由处理程序在.net 4.0解决方案中路由URL。默认情况下,路由处理程序忽略存在的文件,这正是我需要的,因为我不想映射css文件,js文件,图像文件等。
webconfig中的更改(添加customerros部分)迫使我注意到一个错误。如果有图像的链接,并且图像不存在,则会映射网址,从而导致很多麻烦(错误)。
现在我需要的是完全忽略文件扩展名(js,css,jpg,gif等),或者最好只映射.aspx文件。但我不知道该怎么做。
ps:网站基于用户上传,断开链接的百分比将始终存在。
public class RouteHandler : IRouteHandler
{
private readonly string _path;
public RouteHandler(string path)
{
_path = path;
}
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
Page page = BuildManager.CreateInstanceFromVirtualPath(_path, typeof(Page)) as Page;
foreach (KeyValuePair<string, object> i in requestContext.RouteData.Values)
{
HttpContext.Current.Items[i.Key.Replace("*", "")] = i.Value;
}
return page;
}
}
routes.Add("somename", new Route("folder/insidefolder", null, null, new RouteHandler("~/folder-insidefolder.aspx")));
答案 0 :(得分:0)
我认为以下行解决了图像问题(需要更多测试):
routes.Ignore("{*images}", new { images = @".*\.(jpg|JPG|gif|GIF|png|PNG|ico|ICO)(\?.*)?" });