使路由工作而不在URL中指定操作名称。 - MVC

时间:2017-04-26 00:45:02

标签: asp.net asp.net-mvc routes url-routing asp.net-mvc-routing

我的MVC项目中有以下控制器:

public class PressController : Controller
    {
        // GET: Press
        public ActionResult Index()
        {
            return File("../press/FFF_PRESS.zip", ".zip");
        }
    }

我的路线

 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

当我加载网站时,我的网址如下:

www.example.com

当我点击以下Action <li class="footer__navEl"><a href='@Url.Action("Index", "Press")'>PRESS</a></li>

时,会正确显示主页

我希望网址为

www.example.com/press 

并返回zip文件。

然而,当我点击此Action时,我得到以下内容:

  

HTTP错误403.14 - 禁止访问   Web服务器配置为不列出此目录的内容。

然而,当我指定

www.example.com/press/index

正确返回.zip文件。

现在我将以下内容添加到我的routes.config:

routes.MapRoute("Press", "Press", new { controller = "Press", action = "Index" });

我仍然得到上面提到的相同错误,是否有人能够了解我可能缺少的内容以使其正确执行?

1 个答案:

答案 0 :(得分:3)

  

HTTP错误403.14 - 禁止将Web服务器配置为不列出此目录的内容。

该错误表示您的Web服务器上有一个名为press物理目录。发生的事情是Web服务器返回目录而不是将请求传递给MVC。 IIS中的默认设置不是列出目录的内容,因此是错误。

您需要删除press目录(推荐),或者使用runAllManagedModulesForAllRequests div重新配置IIS以运行MVC模块而不是目录。{/ 3}。

这根本不是路由问题 - 这是一个Web服务器配置问题。

相关问题