Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么路由在应该映射到不同的控制器时调用HomeController索引?_C#_Asp.net Core_Asp.net Core Mvc_Asp.net Mvc Routing - Fatal编程技术网

C# 为什么路由在应该映射到不同的控制器时调用HomeController索引?

C# 为什么路由在应该映射到不同的控制器时调用HomeController索引?,c#,asp.net-core,asp.net-core-mvc,asp.net-mvc-routing,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Mvc Routing,我希望url调用BillsController.cs中的索引操作。相反,它从HomeController.cs调用索引操作。如果我使用它,则会调用BillsController的索引操作 按照我的理解,Bills应该映射到controller,它应该默认为Index,而URL中没有第二个参数。为了测试,我试着给出了404。有人能解释这种行为吗?它的行为似乎不正常 my Startup.cs文件中的路由: app.UseMvc(routes => { routes.MapRoute(

我希望url调用BillsController.cs中的索引操作。相反,它从HomeController.cs调用索引操作。如果我使用它,则会调用BillsController的索引操作

按照我的理解,Bills应该映射到controller,它应该默认为Index,而URL中没有第二个参数。为了测试,我试着给出了404。有人能解释这种行为吗?它的行为似乎不正常

my Startup.cs文件中的路由:

app.UseMvc(routes =>
{
    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});
BillsController:

public class BillsController : Controller
    {    
        public IActionResult Index()
        {
            return View();
        }
    }
我的文件夹结构:


@NickOban,我尝试创建一个新的MCV项目,并添加了一个账单控制器。然后我添加了Bills存储库并添加了index.cshtml

这条路对我很有效。然而,似乎您可能在某个时候实现了带有名称Bills的前缀,这将导致您正在经历的现象


确保代码中没有前缀。MVC应用程序应该自动修复任何前缀。加试https://localhost:44354/Bills/Index.cshtml 而不是简单地索引~因为MVC正在导出索引是一个文件夹

您的默认路由映射到Home controller,而不是Bills controller当您调用此选项时:它试图在您的HomeController中找到一个名为Bills的方法。但是,您可能在某个时候使用名称Bills实现了前缀,这将导致您遇到的现象。同意。@Cornelis这看起来很有可能。我确实创建了另一个项目,它的工作方式与您预期的一样。奇怪的是,URLhttps://localhost:44354/Bills/Index.cshtml 给出了一个404。不确定在哪里查找前缀,my launchSettings.json看起来非常标准,只有基本url和端口。我还清除了项目中的所有生成文件并重新生成。没有变化。我想我发现了这个问题。我已进入项目属性,并将应用程序URL更改为。后来我又把它改回来了,但设置一定卡住了。我创建了一个新项目并导入了所有代码。现在一切顺利。感谢所有的反馈!