Mag*_*son 12 .net asp.net-mvc asp.net-mvc-routing
我有一个名为Downloads的MVC控制器.HTTP:// mysite的/下载
我还想将物理文件放在名为http://mysite/Downloads/MyFile.zip的物理文件夹中.
如果我只是创建一个文件夹,那么在浏览到http:// mysite/Downloads时会得到403 .(很可能是因为目录浏览被禁用)但我希望MVC控制器能够启动.
我怎么做?
如果您浏览http://mysite/Downloads/{ACTION}它将触发您的控制器操作.
在你的例子中唯一不起作用的是/Downloads没有动作.您可以重新编写此URL以将您重定向到默认操作.
此外,您需要让routehandler忽略您的下载文件.您可以在global.asax文件中添加一行,以忽略所有适合的zip文件或其他忽略模式.
routes.Ignore("{resource}.zip");
Run Code Online (Sandbox Code Playgroud)
从.NET 3.5开始,您可以路由现有文件:
public static void RegisterRoutes(RouteCollection routes) {
routes.RouteExistingFiles = true;
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional }
);
}
Run Code Online (Sandbox Code Playgroud)
因此,假设我们在站点根目录上有一个名为Markets包含 audio.mp3文件的文件夹:
\Markets
\Markets\audio.mp3
Run Code Online (Sandbox Code Playgroud)
假设存在a MarketsController,如果我们提出请求Markets,它将被路由到Markets/Index.
如果我们要求/Markets/audio.mp3我们获取mp3文件,如果我们要求Markets/AnythingElse,则会应用正常路由.
| 归档时间: |
|
| 查看次数: |
2068 次 |
| 最近记录: |