0

我有一个基于 Flash 的组件,它坚持要求在我当前所在的任何“目录”中提供 XML 设置文件。

这意味着它要求像...这样的路径

/Home/mysettings.xml
/Home/Record/mysettings.xml
/AnotherController/AnotherAction/mysettings.xml

这很烦人。我正在尝试创建一个 MVC 路由来捕获任何东西mysettings.xml并将它们发送到静态操作。我已经为 XML 创建了一个视图,我可能需要即时交换变量(可能使用某种 URL 查询)。

这是我的第一个刺Global.asax.cs

routes.MapRoute(
    "XmlOverride",
    "mysettings.xml",
    new { controller = "Home", action = "MyXML" }
);

但我错过了一些东西。无论我对它做什么,它要么是 404,要么不会去正确的位置。有没有办法让它路由到正确的动作?我可以在此过程中保留 URL 变量吗?

谢谢!

更新

我有一个像这样工作的破解版本。我不确定这是最好的方法,但它似乎有效。有没有人有更好的解决方案?

routes.MapRoute(
    "XmlOverride",
    "{c}/mysettings.xml",
    new { controller = "Home", action = "MyXML" }
);
routes.MapRoute(
    "XmlOverride+Action",
    "{c}/{a}/mysettings.xml",
    new { controller = "Home", action = "MyXML" }
);

你不能使用{controller}或者{action}因为它在一个固定的路径上。

4

1 回答 1

1

根据这个答案,您可以重写网址。

<rewrite>
  <rules>
    <rule name="MySettingsRewrite">
      <match url="(\w+)mysettings\.xml$" />
      <action type="Rewrite" url="/Home/MyXML" />
    </rule>
  </rules>
</rewrite>

您必须仔细检查正则表达式,不确定我是否正确。

我能想到的唯一其他选择是实现您自己的 Route Handler 类并使用它。

于 2013-06-20T20:56:14.467 回答