Asp.net mvc MVC 4路由-忽略图像请求

Asp.net mvc MVC 4路由-忽略图像请求,asp.net-mvc,asp.net-mvc-4,c#-4.0,.net-4.0,Asp.net Mvc,Asp.net Mvc 4,C# 4.0,.net 4.0,我试图阻止用户在我的web应用程序中请求自己访问图像,因此不应允许用户发出此类请求: sitename/Images/test.jpg 我已经尝试在RouteConfig.cs中指定一个要忽略的路由,但它仍然自己为图像提供服务,有没有办法防止这种情况发生 这就是我尝试过的: routes.IgnoreRoute("{file}.jpg"); routes.IgnoreRoute("Images/{file}.jpg"); routes.IgnoreRoute("{resource}.jpg");

我试图阻止用户在我的web应用程序中请求自己访问图像,因此不应允许用户发出此类请求:

sitename/Images/test.jpg

我已经尝试在RouteConfig.cs中指定一个要忽略的路由,但它仍然自己为图像提供服务,有没有办法防止这种情况发生

这就是我尝试过的:

routes.IgnoreRoute("{file}.jpg");
routes.IgnoreRoute("Images/{file}.jpg");
routes.IgnoreRoute("{resource}.jpg");
routes.IgnoreRoute("Images/{resource}.jpg");

如果要忽略文件夹,可以这样写:

routes.IgnoreRoute("Images/{*pathInfo}");
routes.IgnoreRoute("{Images}", new { assets = @".*\.(jpeg|gif|jpg)(/.)?" });
如果您只想忽略文件夹中的某些文件,可以这样使用:

routes.IgnoreRoute("Images/{*pathInfo}");
routes.IgnoreRoute("{Images}", new { assets = @".*\.(jpeg|gif|jpg)(/.)?" });

如您所见,
constraints
参数可以像
RegExp

一样实现,如果要忽略文件夹,可以这样编写:

routes.IgnoreRoute("Images/{*pathInfo}");
routes.IgnoreRoute("{Images}", new { assets = @".*\.(jpeg|gif|jpg)(/.)?" });
如果您只想忽略文件夹中的某些文件,可以这样使用:

routes.IgnoreRoute("Images/{*pathInfo}");
routes.IgnoreRoute("{Images}", new { assets = @".*\.(jpeg|gif|jpg)(/.)?" });

正如您所看到的,
constraints
参数可以像
RegExp

一样实现,我已经尝试过了,但它仍然满足图像请求。我已经试过了你的answerImages文件夹中提供的两个示例default@DenisWessels对不起,我不明白你的情况。您不希望允许用户从direct link获取图像,但应仍然能够以其他方式下载图像?如果用户尝试自己这样访问图像,则不应允许这样做Route.ignoreroute忽略使用控制器的默认路由。我的意思是,当请求到达服务器时,它将进入路由,若它找到匹配项,那个么控制器将初始化,当你们不需要使用控制器并且只想将静态内容传递给用户时,但请求的sognature看起来像是你们使用ignoreroure的控制器的路径。所以我的意思是,这不是关于文件夹的访问,而是关于控制器的使用与否。我已经尝试过了,但它仍然满足对图像的请求。我已经试过了你的answerImages文件夹中提供的两个示例default@DenisWessels对不起,我不明白你的情况。您不希望允许用户从direct link获取图像,但应仍然能够以其他方式下载图像?如果用户尝试自己这样访问图像,则不应允许这样做Route.ignoreroute忽略使用控制器的默认路由。我的意思是,当请求到达服务器时,它将进入路由,若它找到匹配项,那个么控制器将初始化,当你们不需要使用控制器并且只想将静态内容传递给用户时,但请求的sognature看起来像是你们使用ignoreroure的控制器的路径。所以我的意思是,这不是关于对文件夹的访问,而是关于是否使用控制器。