使用带有查询字符串参数的URL路由会导致错误加载所有.png / .jpg图像在ASP.NET 4.0中

时间:2014-04-22 11:20:36

标签: c# asp.net url-rewriting routing

我正在尝试将网址路由实施到我的网络应用中 当我将这个实现到没有QueryStrings的页面时,它工作正常。

但是当我尝试为使用查询字符串的网页实现相同时,它会给出Jscript运行时错误。和未找到的图像

所以对于 JS 我使用ResolveClientUrl

解决了这个问题
<script src='<%=ResolveClientUrl("~/raphl_map/raphael-min.js") %>' type="text/javascript"></script>

现在在我的Ajax调用中,我动态生成带有相应urlpath的img标记,并面对那些动态图像的问题,

关于ajax成功响应我正在使用for循环添加li元素

var elAdd = "<li class=" + id_setClass + " > <img  src="+photo_src+"/></li>";
$("#ul_itemlist").append(elAdd);

Global.asax中

    void RegisterRoutes(RouteCollection routes)
      {
        //  routes.Ignore("{file}.png");
        //  routes.IgnoreRoute("{file}.png");
        // routes.Ignore("{*alljpg}", new { alljpg = @".*\.jpe?g" });
        // routes.Ignore("{*allpng}", new { allpng = @".*\.png(/.*)?" });
        routes.Add(new Route(@".*\.png", new StopRoutingHandler()));
        routes.RouteExistingFiles = false;

         routes.MapPageRoute("Home", "Home", "~/homepage.aspx");
         routes.MapPageRoute("Login", "Login", "~/Login.aspx");
         routes.MapPageRoute("Profile", "Profile/{user_id}", "~/MyProfile.aspx");
       }

void Application_Start(object sender, EventArgs e) 
 {
        RegisterRoutes(RouteTable.Routes);
 }

我试过的不适合我的事情是

routes.Ignore("{*allpng}", new { allpng = @".*\.png(/.*)?" });
routes.Add(new Route(@".*\.png", new StopRoutingHandler()));

1 个答案:

答案 0 :(得分:0)

我认为以下内容应该有效:

routes.IgnoreRoute("{*png}", new { png = @"(.*/)?.*\.png(/.*)?"});

这应排除其中包含.png的路线(在任何目录中 - 这就是您忘记IMO的那一点)。