ASP.NET MVC 路由和静态数据(即图像、脚本等)

发布于 2024-08-29 11:37:20 字数 217 浏览 9 评论 0原文

如果我在 ASP.NET MVC1(或 2)Web 应用程序中请求静态资源,例如...图像、javascript 文件或 css 文件....NET 框架是否会尝试查看如果请求与路由列表匹配...并且最终找不到它的控制器?

例如。

资源:/Content/Images/Foo.png

此请求是否通过我的路由列表..无法将任何控制器/操作与此请求匹配,然后直接尝试该路径?

If I have a request for a resource in my ASP.NET MVC1 (or 2) web app for a static resource, say ... an image or a javascript file or a css file ... does the .NET framework try and see if the request matches the route list ... and eventually can't find a controller for it?

eg.

Resource: /Content/Images/Foo.png

Does this request go through my route list .. fails to match any controllers / actions to this request and then attempt that path directly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

天涯沦落人 2024-09-05 11:37:20

您可以选择是否映射现有文件或不设置 RouteCollection.RouteExistingFiles 属性

获取或设置一个值,该值指示
ASP.NET 路由是否应处理
与现有文件匹配的 URL。

以下是我从此处读到的内容:

但是,路由系统仍然会检查文件系统以查看是否存在
传入的 URL 恰好与文件或磁盘匹配,如果是,则路由会忽略该请求(绕过
URL 也可能匹配的任何路由条目),以便直接提供文件。
这对于静态文件(例如图像、CSS 和 JavaScript 文件)非常方便。你可以
将它们保存在您的项目中(例如,在您的 /Content 或 /Script 文件夹中),然后引用并
直接为它们提供服务,就像您根本没有使用路由一样。由于该文件确实存在
在磁盘上,这优先于您的路由配置。

如果您希望路由配置优先于磁盘上的文件,您可以设置
将 RouteCollection 的 RouteExistingFiles 属性设置为 true。 (默认情况下为 false。)

You can choose whether to map an existing file or not setting the RouteCollection.RouteExistingFiles Property

Gets or sets a value that indicates
whether ASP.NET routing should handle
URLs that match an existing file.

Here is what I read from here:

However, the routing system still does check the file system to see if an
incoming URL happens to match a file or disk, and if so, routing ignores the request (bypassing
any route entries that the URL might also match) so that the file will be served directly.
This is very convenient for static files, such as images, CSS, and JavaScript files. You can
keep them in your project (e.g., in your /Content or /Script folders), and then reference and
serve them directly, just as if you were not using routing at all. Since the file genuinely exists
on disk, that takes priority over your routing configuration.

If, instead, you want your routing configuration to take priority over files on disk, you can set
the RouteCollection’s RouteExistingFiles property to true. (It’s false by default.)

自此以后,行同陌路 2024-09-05 11:37:20

默认情况下,路由引擎将忽略服务器上物理存在的所有文件的路由映射。简而言之,您无需为 MVC 应用程序执行任何操作即可链接到静态文件。

By default the routing engine will ignore route maps for all files that exist physically on the server. In short, you need to do nothing for a MVC app to link to static files.

初见 2024-09-05 11:37:20

您还可以在 IIS 中做一些小技巧。我将 js、图像、css 等存储在虚拟目录下的 Content 文件夹中。

如果您随后查看内容文件夹的属性(在 IIS 管理器中),请将其创建为虚拟目录,然后删除通配符映射。然后将 Content 文件夹设置回普通目录。然后,这应该会停止由 aspnet_isapi 处理程序处理的对这些文件的请求。

You can also do a little trick in IIS. I store my js, images, css etc in the Content folder underneath the virtual directory.

If you then view properties (in IIS manager) of the Content folder, create it as a virtual directory, then remove the Wildcard mapping. Then set the Content folder back to a normal directory. This should then stop requests to these files being handled by the aspnet_isapi handler.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文