核心1.1中的控制器重命名导致404错误

时间:2017-09-04 04:18:46

标签: asp.net-core-1.1

在一个可用的Core 1.1 Web应用程序中,我重命名了一个控制器。控制器URL是从代码片段中的引导程序弹出窗口调用的:

    $('.main-select').on('shown.bs.popover', function () {
        $('.submit').click(function () {
            var fromval = $('.popover #fromvalue').val();
            var toval = $('.popover #tovalue').val();
            var option = {
                url: "/ProductMixController/GetDateData?dStart=" + fromval + "&" + "dEnd=" + toval,
                data: JSON.stringify({ dStart: fromval, dEnd: toval }),
                method: 'post',
                dataType: 'json',
                contentType: 'application/json;charset=utf-8'
            };

            window.location.href = option.url;

原始控制器名称为ProductMixSS并按预期工作。为了遵循MS命名约定,我将其重命名为ProductMixController。结果是一致的404错误。控制器和型号代码保持不变,所有缓存都已清除 - 我知道的,甚至NuGet - 拼写已经过检查和双重检查,配置文件已被检查,端口号已被更改,甚至盒子已被删除重新启动。

我看过一些对这个'bug'的引用,但似乎没有解决我遇到的同样问题。

所以WTF。

1 个答案:

答案 0 :(得分:0)

问题在于,根据长期存在的MVC规则和规定,控制器类需要在其名称中使用“Controller”后缀来路由到类似命名的操作。如果您没有通过编码自己的路由来遵循此约定,那么您将遇到同样的问题。 .Net Core在某种程度上放松了这个规则,现在可以根据需要放置模型,控制器,视图文件。但是,似乎将类名称中的“Controller”后缀仍然遵循原始的MVC编译和执行路径。

哇。这是一场为期两天的迷恋运动。