我有一个基于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}
,因为它位于固定路径上。
答案 0 :(得分:1)
基于this answer,您可以重写网址。
<rewrite>
<rules>
<rule name="MySettingsRewrite">
<match url="(\w+)mysettings\.xml$" />
<action type="Rewrite" url="/Home/MyXML" />
</rule>
</rules>
</rewrite>
你必须仔细检查正则表达式,不确定我是否正确。
我能想到的唯一其他选择是实现自己的Route Handler类并使用它。