如何使用MVC路由处理IIS子应用程序?

时间:2012-04-26 09:16:17

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

我有一个MVC应用程序已被移动到wwwroot中的子文件夹,并且该子文件夹已通过IIS成为应用程序。因此,在我的登录页面的URL之前看起来像这样:

www.mydomain.com/login

现在看起来像这样:

www.mydomain.com/application/login

应用程序运行正常,它似乎没有影响我的应用程序中的路由或任何链接。但是,它引起了我引用图像src的问题:

<img src="/content/images/myimage.png"/>

正在尝试从网址 www.mydomain.com/content/images/myimage.png 中检索图像,这显然会返回404.

在我的global.asax文件中,我只使用默认路由,我试图修改该路由以将子文件夹作为URL的一部分进行说明:

routes.MapRoute("Default",
                "application/{controller}/{action}/{id}",
                new { controller = "dashboard", action = "index", id = UrlParameter.Optional });

但是,现在当我尝试转到根网址 www.mydomain.com/application 时,我只是获得一个目录列表!如果我试着直接去控制器,即 www.mydomain.com/application/dashboard ,我会得到404!

任何人都知道如何通过MVC路由处理这种情况?

2 个答案:

答案 0 :(得分:4)

  1. 您无需更改路由。它从入口点到您的应用程序。
  2. 使用@ Url.Content(“〜/ content / images / myimage.png”)。
  3. 希望这会有所帮助。

答案 1 :(得分:0)

试试这个...

routes.MapRoute("Application",
                "application/{controller}/{action}/{id}",
                new { controller = "dashboard", action = "index", id = UrlParameter.Optional });

routes.MapRoute("Default",
                "{controller}/{action}/{id}",
                new { controller = "dashboard", action = "index", id = UrlParameter.Optional });