【发布时间】:2018-05-02 09:38:37
【问题描述】:
我正在使用 ASP.NET 核心示例项目。创建项目运行
dotnet new lambda.DynamoDBBlogAPI --profile default --region us-east-1
这会默认创建两个控制器。
- Controllers\S3ProxyController - 用于代理 S3 存储桶的 Web API 控制器
- Controllers\ValuesController - 示例 Web API 控制器
我正在尝试添加一个额外的控制器 .. 但我显然缺少一些东西,因为控制器似乎没有注册。
如果我只是将一个看起来像这样的类添加到 Controllers 文件夹中。
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.AspNetCore.Mvc;
namespace FriendHelper.Controllers
{
[Route("api/animals")]
class AnimalController : Controller
{
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "Lion", "Tiger" };
}
}
}
这似乎没有注册,所以转到http://localhost:5000/api/animals 只会返回一个 404
我对 ASP.NET MVC 没有太多经验,所以我确信我缺少一些愚蠢的东西,但我看不到这些其他控制器的注册位置。
【问题讨论】:
-
如果您询问服务是否崩溃.. 不,您只会得到 404。
-
在常规 MVC 中,您应该从 ApiController 继承,而不是控制器。 (我猜核心是一样的)
-
感谢@ZivWeissman,但核心似乎并非如此。我还复制了一个正在工作的其他控制器,但这几乎就像我的新控制器以某种方式注册了一样。
-
其他控制器也使用“路由”属性?
-
是的,另外两个具有以下属性 [Route("api/[controller]")] ...但甚至将其硬编码为 [Route("api/aaa" )] 然后将我的控制器硬编码为 [Route("api/bbb")] 使原来的工作正常,但我的控制器将无法工作。
标签: c# asp.net-core-mvc aws-lambda serverless