【问题标题】:ASP.NET MVC Missing Default Action only for one controllerASP.NET MVC 缺少仅适用于一个控制器的默认操作
【发布时间】:2015-01-02 21:33:31
【问题描述】:

我不知道我的网站发生了什么。从今天开始,只有一个控制器中的默认操作“索引”不再起作用。 如果我打电话给http://website.com/Valuation,我会收到 403 错误页面,因为网络服务器不会路由我的请求并尝试浏览文件夹。如果我写http://website.com/Valuation/Index 一切正常。 我搜索了所有代码,但我找不到问题,一切看起来都像其他控制器一样。

我怎样才能找到问题?您是否知道是否存在导致该问题的已知问题,或者您是否知道是否存在路由请求的跟踪\日志\调试器?

谢谢

麦克风

【问题讨论】:

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


    【解决方案1】:

    检查 ~\App_Start\RouteConfig.cs 文件

    public class RouteConfig
        {
            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}
                );
            }
        }
    

    【讨论】:

    • 我的 RouteConfig 中确实有这段代码,实际上我网站中的所有内容都正确路由,除了一个特定的控制器。几天前这个控制器也可以,但现在根本不再工作了。可能我的代码有问题,我找不到它。我需要一种解决问题的方法,而不是解决它的解决方案
    【解决方案2】:

    问题很可能是您的网站根目录中有一个名为Valuation的文件夹。这就是估值指数行动不起作用的原因。 url http://website.com/Valuation 不是路由到控制器操作,而是路由到文件夹 Valuation

    从您的根目录中删除此文件夹 Valuation 或重命名它,然后此 URL http://website.com/Valuation 将起作用。

    还要检查 ValuationController 是否有 public ActionResult Index() ([HttpGet] 方法。

    【讨论】:

    • 谢谢你拯救我的一天!这是一个由批处理程序在错误位置创建的文件夹......现在一切正常!谢谢!
    • 这对我有用,我不知道那个目录是怎么到那里的
    猜你喜欢
    • 1970-01-01
    • 2019-06-06
    • 2012-08-14
    • 2016-02-28
    • 2010-09-25
    • 2016-10-07
    • 2016-08-23
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多