0

我正在使用以下路由处理程序在 .net 4.0 解决方案中路由 url。默认情况下,路由处理程序会忽略存在的文件,这正是我需要的,因为我不想映射 css 文件、js 文件、图像文件等。

webconfig 中的更改(添加 customerros 部分)迫使我注意到一个错误。如果有图片的链接,但图片不存在,则映射 url,造成很多麻烦(错误)。

现在我需要完全忽略文件扩展名(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")));
4

1 回答 1

0

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

routes.Ignore("{*images}", new { images = @".*\.(jpg|JPG|gif|GIF|png|PNG|ico|ICO)(\?.*)?" });
于 2012-06-29T22:28:37.473 回答