【发布时间】:2017-02-23 17:01:36
【问题描述】:
所以这是我第一次设置基于 netcore MVC 的应用程序。我过去在普通的旧 asp.net 上使用过 MVC 4。
所以我的路由有问题。我的应用程序是一个单页应用程序 (spa),可以从 home 控制器上的 index 操作访问。我可以很好地访问这个控制器方法,并且我的默认设置是这样导航到的:/。
我还有第二个用于身份验证的控制器,称为AccountController。这个控制器的方法接受并返回 JSON,而不是视图。我还可以从我的应用程序访问此控制器上的方法。
我遇到的问题在于我的下一个控制器,这是我的 API 的开始。
因此,我将它放在了我的控制器文件夹中名为api 的文件夹中。但是,无论我尝试什么,我似乎都无法访问控制器上的方法。我也试过把它移出 api 文件夹,只放在控制器文件夹的路径中。
路由定义
app.UseMvc(routes =>
{
routes.MapRoute(
name: "api",
template: "api/{controller=Core}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
我已经尝试添加和删除 api 定义,删除 api 部分,并为操作添加模板,都没有效果。
麻烦的控制器
public class CoreController : Controller
{
[HttpGet]
public JsonResult Get()
{
return Json("Dev");
}
}
我已尝试将[Route(~routing here~)] 注释添加到此控制器及其方法,但也没有成功。
文件夹结构
我还应该提到,我已经尝试了很多 URL 来访问这个控制器:
- /api/Core/
- /核心/
- /api/Core/Get
一天中的大部分时间我都在绞尽脑汁试图解决这个问题,但我知道我遗漏了一些明显的东西,我终生无法弄清楚它是什么。
编辑:
- 如果有人想要完整的示例,我已将我的项目的精简示例添加到 github:https://github.com/lexwebb/aspnet-test
编辑 2
看来我的示例有效,我将添加一些东西来看看是什么破坏了它
【问题讨论】:
-
将 api 控制器放在子文件夹中而不是直接放在 Controllers 文件夹中可能是由于控制器发现的约定而导致的问题,我建议尝试将其放在 Controllers 目录中以验证是否存在问题
-
@JoeAudette 班级位置无效。 api 按类型搜索类。 OP 已排除可能对识别问题很重要的信息。提供可用于重现问题的minimal reproducible example。
-
@Nkosi 哪些信息更有用?我不能准确地发布整个申请?
-
@Nkosi 如果你不介意看一下,我已经向 github 添加了一个完整的示例
标签: c# routing routes asp.net-core single-page-application