我正在尝试使用重复的操作合并WebAPI控制器,以限制控制器的蔓延。这将需要一个控制器的多个“具有相同参数类型”的帖子,当我尝试使用[RoutePrefix(“”)]和不同的方法级别[Route(“”)]
来执行此操作时,会看到下面的错误如何允许多个Post请求?
错误: CS0111类型“ DataController”已经定义了具有相同参数类型的名为“ Post”的成员
packages.config
中的WebApi版本
<package id="Microsoft.AspNet.WebApi" version="5.2.6" targetFramework="net461" />
示例代码:
using System.Collections.Generic;
using System.Web.Http;
namespace UberCool.v1.Data.Controllers
{
[RoutePrefix("api/v1/data")]
public class DataController : ApiController
{
[Route("/cars")]
public List<Cars> Post()
{
var response = new CarsSFTP().GetData();
return response;
}
[Route("/trucks")]
public List<Trucks> Post()
{
var response = new TrucksSFTP().GetData();
return response;
}
}
}
谢谢!
答案 0 :(得分:0)
如ckuri所建议。
利用方法名称中的HTTP Verb作为前缀。以下两个都将被视为发布请求。如果我包括路由,则它们可以是同一控制器,但方法不同。从上面调整示例代码。
-PostMyRandomMethod()
-PostMyRandomMethod2()
using System.Collections.Generic;
using System.Web.Http;
namespace UberCool.v1.Data.Controllers
{
[RoutePrefix("api/v1/data")]
public class DataController : ApiController
{
[Route("/cars")]
public List<Cars> PostMyRandomMethod()
{
var response = new CarsSFTP().GetData();
return response;
}
[Route("/trucks")]
public List<Trucks> PostMyRandomMethod2()
{
var response = new TrucksSFTP().GetData();
return response;
}
}
}