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

C# 使用带有querystring参数的URL路由会导致在ASP.NET 4.0中加载所有.png/.jpg图像时出错,c#,asp.net,url-rewriting,routing,C#,Asp.net,Url Rewriting,Routing,我正在尝试将URL路由实现到我的web应用程序。 当我将此实现到一个没有查询字符串的页面时,它工作得很好 但是,当我尝试为使用QueryString的网页实现相同的功能时,会出现给定Jscript运行时错误。和未找到的图像 所以对于JS,我使用ResolveClientUrl解决了这个问题 我尝试过但对我不起作用的事情 routes.Ignore("{*allpng}", new { allpng = @".*\.png(/.*)?" }); routes.Add(new Route(@".*\

我正在尝试将URL路由实现到我的web应用程序。 当我将此实现到一个没有查询字符串的页面时,它工作得很好

但是,当我尝试为使用QueryString的网页实现相同的功能时,会出现给定Jscript运行时错误。和未找到的图像

所以对于JS,我使用ResolveClientUrl解决了这个问题

我尝试过但对我不起作用的事情

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

我认为以下措施应该有效:

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

这应该排除任何目录中包含.png的路由,这是您忘记的地方。

是动态生成的图像还是文件系统中的文件?对于后面的一个,您可以告诉IIS处理该请求并直接返回文件。也许还可以看一下:@chrfin:所有图像都以图像的形式存储在一个文件夹名中,路径保存在数据库中,因此,在ajax调用中,我从数据库获取imgpath并绑定到img标记,我在更新问题时动态生成img标记。IgnoreRoute给出错误CS1061:“System.Web.Routing.RouteCollection”不包含“IgnoreRoute”的定义,并且没有扩展方法“IgnoreRoute”接受类型为“System.Web.Routing.RouteCollection”的第一个参数可以找到您是否缺少using指令或程序集引用?可能这只适用于MVC。你能试着添加MVC NuGet包只是为了检查它是否工作吗?不,它仍然不工作,汇编类,还有没有其他没有添加MVC的类呢?那么我没有其他想法,除了告诉IIS不要将真实文件路由到ASP.NET,而是直接返回它们…谢谢你的努力,嗯,我尝试了更多的希望很快就解决了这个问题,而不使用MVC
    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()));
routes.IgnoreRoute("{*png}", new { png = @"(.*/)?.*\.png(/.*)?"});