关于名为属性的MVC控制器有什么特别之处吗?

时间:2015-12-14 09:44:04

标签: c# asp.net-mvc controller asp.net-mvc-5 asp.net-mvc-routing

在尝试解决这个问题多年之后,考虑路由冲突等等 - 我从一开始就开始了一个单独的项目。

它看起来像调用时您尝试访问根网站(http://site/properties)“属性”总是返回403.14禁止消息的MVC控制器 - 然而,其他网页的工作(http://site/properties/index

它作为区域中的控制器工作正常,但是,我无法在主站点中创建它。

我想知道是否有人知道为什么以及最好的方法是什么?

2 个答案:

答案 0 :(得分:3)

除了DavidG' answer之外。

发布项目时,编译的版本没有Properties文件夹。要在本地开发时解决此问题,可以将RouteExistingFiles设置为true,以便ASP.NET路由处理所有请求。

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

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

答案 1 :(得分:2)

问题是您的项目已经包含一个名为Properties的文件夹,该文件夹主要用于AssemblyInfo.cs文件,但其中也包含其他内容。用于解析要发送到客户端的文件的引擎会优先考虑路由上的文件和文件夹。所以URL http://site/properties正在尝试从那里服务器内容,最终会被阻止。