当文件实际存在于指定位置时的 MVC 路由

2023-11-27

所以我在 IIS 7 下运行的 MVC 3 应用程序中有一条这样的路线:

routes.MapRoute(
               "VirtualTourConfig",
               "virtualtour/config.xml",
               new { controller = "VirtualTour", action = "Config" }
               );

诀窍在于 /virtualtour/config.xml 中实际上存在一个文件。看起来请求只是返回该位置的 xml 文件,而不是命中路由,该路由会处理 XML、进行一些更改并返回自定义 XmlResult。

如果文件存在于磁盘上,关于如何告诉我的应用程序命中路由而不是实际文件,有什么建议吗?

EDIT:看来我可以使用routes.RouteExistingFiles = true;在 Global.asax 的 RegisterRoutes 方法中告诉应用程序忽略磁盘上的文件。然而,这会全局设置该标志并破坏应用程序内的许多其他请求。例如,我仍然希望调用 /assets/css/site.css 来返回 CSS 文件,而不必为每个静态资源专门设置路由。所以现在的问题是,有没有办法在每条路线的基础上做到这一点?


到目前为止,我发现的最佳答案是全球应用routes.RouteExistingFiles=true然后选择性地忽略我想要传递到现有文件(如 .js、.css 等)的路由。所以我最终得到了这样的结果:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("*.js|css|swf");
            routes.RouteExistingFiles = true;

            routes.MapRoute(
               "VirtualTourConfig",
               "virtualtour/config.xml",
               new { controller = "VirtualTour", action = "Config" }
               );
}

如果有人有更好的解决方案,我想看看。我更喜欢有选择地将“RouteExistingFIles”标志应用于各个路由,但我不知道是否有办法做到这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当文件实际存在于指定位置时的 MVC 路由 的相关文章

随机推荐

  • 获取带有改造的网站的 html - Android?

    我怎样才能获得一个网站的htmlretrofit 例如我有这个url我需要获取这个 url 的 html 以及如何加载更多 下面是我的代码 MainActivity java public class MainActivity extend
  • Flask 会话不持久

    我在 CentOS 6 3 上运行 Python 2 7 Apache mod wsgi 当我在本地主机上时 一切正常 但是 当我在 Azure 中的虚拟机上运行代码时 我没有看到会话信息跨页面保存 基本上在我看来 我有这样的想法 fron
  • mod_rewrite 错误 404 如果 .php

    我重写了我的网址以方便用户使用 例如 我有一个名为 user php 的页面 我将其重写为 user 但用户仍然可以使用 user php 如果他们请求扩展名为 php 的页面 我可以重定向到 404 吗 Options MultiView
  • AttributeError:“NoneType”对象没有属性“_instantiate_plugins”(无法导入create_engine)

    import os from sqlalchemy import create engine from sqlalchemy orm import scoped session sessionmaker engine create engi
  • html5,段落内的图/图标题给出了不可预测的输出

    以下标记使用figure元素来显示图像 该图像与段落的文本内联 因此该图 包含 在第一个元素内 p p div class object content p p div
  • Laravel Blade @include .html 文件

    将 HTML 文件包含在 Blade 中 我可以添加一个 html文件代替 php使用 Laravel 4 Blade My code include emails templates file file is email html fil
  • 模板类上的二元运算符重载

    我最近试图衡量我的运算符重载 模板能力 并作为一个小测试 创建了下面的 Container 类 虽然此代码在 MSVC 2008 下可以正常编译并正常工作 显示 11 但 MinGW GCC 和 Comeau 都在operator 超载 因
  • JPA 级联持久性与实体 ElementCollection 键

    我有两个像这样的 JPA 实体 Entity class Foo Id private long id Entity class Bar ElementCollection targetClass String class fetch Fe
  • 具有可变内容的不可变容器

    故事从我认为很简单的事情开始 我需要设计一个将使用一些 STL 容器的类 我需要让该类的用户访问这些容器的不可变版本 我不希望用户能够更改容器 他们不能push back 例如在列表上 但我希望用户能够更改包含的对象 使用back 并修改它
  • boost.filesystem create_directories 抛出 std::bad_alloc

    我有一个在 Windows XP SP3 中运行的使用 Boost 1 47 0 的 Visual Studio 2008 C 03 应用程序 电话boost filesystem create directories L c foo ba
  • 如何验证 Rails 中的日期?

    我想在 Ruby on Rails 中验证模型中的日期 但是 日 月和年值在到达我的模型时已转换为不正确的日期 例如 如果我在视图中输入 2009 年 2 月 31 日 当我使用Model new params model 在我的控制器中
  • rhc 安装程序给出错误“没有这样的文件 dl/import”

    我正在安装 openshift 客户端工具 如下所述 https developers openshift com en getting started windows html client tools 在 设置您的机器 步骤中 我收到错
  • 在日期中添加天数

    我有一个计划需要在 2009 年 1 月 1 日开始 当我开始新的一天时 我的计划将在第二天显示 这是我到目前为止所拥有的 GregorianCalendar startDate new GregorianCalendar 2009 Cal
  • 比较两个 NSArray 并返回差异数

    如何获取两个 NSArray 比较它们 然后返回差异的数量 最好是不同对象的数量 例如 数组1 一 二 三 数组2 二 四 一 我希望返回 1 您可以通过使用中间件来做到这一点NSMutableArray NSArray array1 NS
  • 猴子补丁 vs class_eval?

    class String def hello world end end String class eval def world hello end a world gt hello b hello gt world 他们似乎做了同样的事情
  • 无法从 Visual Studio(或实际任何地方)连接到 AWS EC2

    我有一台 AWS 服务器 带有 IIS 的 MS SQL SERVER EXPRESS 2008 R2 弹性 IP 为 54 214 8 111 配置了 HTTP MS SQL 和 FTP 的安全组 我可以使用 rdp 文件连接到远程虚拟机
  • 在 Python 中可视化 RDFLIB 图

    我是 python 中的 RDFLIB 新手 我在这里找到了创建图表的示例 可视化此代码创建的图形的最简单方法是什么 import rdflib Now we create a graph a representaiton of the o
  • 在.NET core 2.0中引用.NET Framework 4 dll

    我有一些 dll 是用 Net框架4 0当我将程序引用到我的项目时 我无法运行我的程序 NET core 2 0 虽然我的 IDE 与 2017 相比 可以在运行时正确识别从该 dll 导入的对象 但我遇到以下异常 System BadIm
  • Laravel Migrations 自引用外键一般错误:1005 无法创建表

    为什么我在使用 Laravel Migrations Schema Builder 创建表时遇到问题 具有自引用外键的表会出现此问题 Schema create cb category function table table gt int
  • 当文件实际存在于指定位置时的 MVC 路由

    所以我在 IIS 7 下运行的 MVC 3 应用程序中有一条这样的路线 routes MapRoute VirtualTourConfig virtualtour config xml new controller VirtualTour