ASP.Net Web Api Core - 无法在抽象基类中使用 CreatedAtRoute

托马斯·格伦

我的 ASP.Net 核心 Web Api 项目中有一个具有 POST 处理功能的通用抽象控制器:

 [HttpPost]
 public async Task<IActionResult> Create([FromBody]R itemDto)
 {
     var ret = await _service.CreateNewItemAsync(itemDto);
     return CreatedAtRoute("Get", new { id = ret.Id }, ret);
 }

“获取”路线如下所示:

 [HttpGet("{id}", Name = "Get")]
 public async Task<R> GetAsync(int id)
 {
     var model = await _service.GetItemAsync(id);

     return model;
 }

我有 2 个控制器类继承自这个基本控制器,当我尝试对这些控制器之一进行简单获取时,我收到以下错误消息:

错误 1:具有相同名称“Get”的属性路由必须具有相同的模板:Action: 'MyApi.WebApi.Controllers.FooController.GetAsync' - Template: 'api/foo/{id}' Action: 'MyApi.WebApi. Controllers.BarController.GetAsync' - 模板:'api/bar/{id}'

我收到此错误的原因非常明显,但我不知道如何在基本控制器中使用命名路由。

任何人都可以指出我正确的方向吗?

伊利亚·丘马科夫

BaseController使用路由名称参数化逻辑。从父级中删除任何路由逻辑。使用 aconst string来参数化子控制器中的属性。然后将此字符串传递给父级:

public class BaseController : Controller
{
    //no routing attributes
    public IActionResult CreateImpl(string routeName)
    {
        //place any logic here
        return CreatedAtRoute(routeName, new object());
    }
}

[Route("api/[controller]")]
public class FooController : BaseController
{
    private const string _getRouteName = "Get_" + nameof(FooController);

    [HttpPost]
    public async Task<IActionResult> Create()
    {
        return CreateImpl(_getRouteName);
    }

    [HttpGet(Name = _getRouteName)]
    public override string Get()
    {
        return base.Get();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASP.NET Core“ CreatedAtRoute”失败

来自分类Dev

ASP.NET Web API CreatedAtRoute 返回 500 内部服务器错误

来自分类Dev

ASP.NET Core Web API InvalidOperationException:无法解析服务

来自分类Dev

无法从asp.net core web api获得角度响应

来自分类Dev

使用Web API的ASP.Net Core路由

来自分类常见问题

使用VSTS的ASP.NET Core Web API的CI / CD

来自分类Dev

ASP.NET Core 1.0 Web API使用camelcase

来自分类Dev

调试asp.net core web API

来自分类Dev

在ASP.NET Core 3.0 Web API项目中使用WebApiContrib.Core.Formatter.Csv

来自分类Dev

使用.NET Core Web API作为ASP.NET Web窗体应用程序的子路由

来自分类Dev

Wcf服务可在.NET Core 3.1控制台应用程序中使用,但无法在ASP.NET Core 3.1 Web API中使用

来自分类Dev

如何从Web API调用ASP.NET Core Web MVC

来自分类Dev

如何从Web API调用ASP.NET Core Web MVC

来自分类Dev

ASP .Net Core Web 应用程序调用 Web API

来自分类Dev

我如何在 asp.net web api 项目而不是 .net core 上使用 DI

来自分类Dev

使用API版本控制的CreatedAtRoute

来自分类Dev

具有多个构造函数的ASP .Net Core Web API依赖注入类

来自分类Dev

ASP.NET Core 1.0 Web API不返回XML

来自分类Dev

在Asp.net Core中将字典发布到Web API

来自分类Dev

ASP.NET Core Web Api自动帮助页面

来自分类Dev

Odata ASP.NET Core 2.2 Web API分页

来自分类Dev

ASP.NET Core Web API和角色授权

来自分类Dev

从ASP .NET Core Web API方法返回完整的XML响应

来自分类Dev

asp.net core 2 Web API超时问题

来自分类Dev

在本地托管Asp.net Core Web Api

来自分类Dev

C#ASP.NET Core Web API包含在何处

来自分类Dev

具有COM对象的ASP.NET CORE WEB API

来自分类Dev

ASP Net Core Web API自定义模型验证

来自分类Dev

ASP.NET Core Web API引发HTTP 500

Related 相关文章

热门标签

归档