忽略webforms路由构建器中的文件扩展名

时间:2012-06-29 22:01:39

标签: c# asp.net

我正在使用以下路由处理程序在.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")));

1 个答案:

答案 0 :(得分:0)

我认为以下行解决了图像问题(需要更多测试):

routes.Ignore("{*images}", new { images = @".*\.(jpg|JPG|gif|GIF|png|PNG|ico|ICO)(\?.*)?" });