使用带有querystring参数的URL路由会导致在ASP.NET 4.0中加载所有.png/.jpg图像时出错

本文关键字:加载 png 出错 图像 jpg NET 参数 querystring URL 路由 ASP | 更新日期: 2023-09-27 17:59:16

我正在尝试实现URL路由到我的web应用程序
当我在一个没有QueryStrings的页面上实现这一点时,它工作得很好。

但是,当我试图为使用查询字符串的网页实现同样的功能时,它会产生Jscript运行时错误。和未找到的图像

因此,对于JS,我使用ResolveClientUrl 解决了这个问题

<script src='<%=ResolveClientUrl("~/raphl_map/raphael-min.js") %>' type="text/javascript"></script>

现在,在我的Ajax调用中,我正在动态生成具有相应urlpath的img标签,并面临这些动态图像的问题,

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

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

全球.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()));

使用带有querystring参数的URL路由会导致在ASP.NET 4.0中加载所有.png/.jpg图像时出错

我认为以下应该有效:

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

这应该排除包含.png的路由(在任何目录中——这是你忘记IMO的地方)。