经过长时间的努力工作,思考路由冲突等等 - 我从一开始就开始了一个单独的项目。有没有什么特殊的MVC控制器称为属性?
它看起来像一个名为“properties”的MVC控制器在尝试访问根站点(http://site/properties
)时始终返回一个403.14禁止消息 - 但是,其他页面可以正常工作(http://site/properties/index
)。
它可以很好地作为一个区域中的控制器,但是我不能在主站点中创建它。
我想知道是否有人知道为什么以及最好的方法是什么?
经过长时间的努力工作,思考路由冲突等等 - 我从一开始就开始了一个单独的项目。有没有什么特殊的MVC控制器称为属性?
它看起来像一个名为“properties”的MVC控制器在尝试访问根站点(http://site/properties
)时始终返回一个403.14禁止消息 - 但是,其他页面可以正常工作(http://site/properties/index
)。
它可以很好地作为一个区域中的控制器,但是我不能在主站点中创建它。
我想知道是否有人知道为什么以及最好的方法是什么?
问题是您的项目已经包含一个名为Properties
的文件夹,它主要用于AssemblyInfo.cs
文件,但其中还包含其他内容。用于解析发送给客户端的文件的引擎优先于路由中的文件和文件夹。所以网址http://site/properties
正试图从那里服务器的内容,无论如何这最终会被阻止。
除了DavidG的answer。
发布项目时,编译的版本没有“属性”文件夹。要在本地开发时解决此问题,可以将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 }
);
}