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