【问题标题】:Additional MVC Controller in AWS lambda ASP.NET CoreAWS lambda ASP.NET Core 中的附加 MVC 控制器
【发布时间】: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


【解决方案1】:

你应该让控制器类public

public class AnimalController : Controller{
...
}

如果您删除 public 关键字,值控制器也将不起作用。至少对我不起作用:)

【讨论】:

  • LOL .. 你知道有时我只是想打自己。我知道这是很明显的事情。谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-12-03
  • 2017-02-26
  • 1970-01-01
  • 1970-01-01
  • 2020-10-12
  • 2016-10-10
  • 1970-01-01
相关资源
最近更新 更多