首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AmbiguousMatchException:请求与多个终结点匹配。火柴?

AmbiguousMatchException:请求与多个终结点匹配。火柴?
EN

Stack Overflow用户
提问于 2021-11-22 14:31:47
回答 2查看 453关注 0票数 1

我正在编写.Net核心WebAPI,在这里我编写了两个HttpGet方法,一个是获取所有记录而不考虑参数,另一个是使用参数(大约25个参数),但我得到了AmbigousMatchException错误。

我该如何解决这个问题呢?

下面是代码。

代码语言:javascript
运行
复制
[Route("api/[controller]")]
[ApiController]
public class SummaryReportController : Controller
{
    DataProvider dp = new DataProvider();

    private readonly IConfiguration _configuration;
    public SummaryReportController(IConfiguration configuration)
    {
        _configuration = configuration;
    }

    [HttpGet]
    public JsonResult GetSummaryReport()
    {
        dp.ConnectionString = _configuration.GetConnectionString("conAccounting_SQLWeb");

        DataSet ds = new DataSet();
        ds = dp.GetDataSetSProc("uspFreight_SearchFreight");

        DataTable dt = ds.Tables[0];

        return new JsonResult(dt);
    }

    [HttpGet]
    public JsonResult GetSummaryReportWithParams(SummaryReport sm)
    {
        dp.ConnectionString = _configuration.GetConnectionString("conAccounting_SQLWeb");

        DataSet ds = new DataSet();
        SqlParameter[] paramChk = new SqlParameter[21];
        paramChk[0] = new SqlParameter("@VendIDName", sm.VendID);
        paramChk[1] = new SqlParameter("@BOLNumber", sm.BOLNumber);
        paramChk[2] = new SqlParameter("@BOLWeightFrom", sm.BOLWeightFrom);
        paramChk[3] = new SqlParameter("@BOLWeightTo", sm.BOLWeightTo);
        paramChk[4] = new SqlParameter("@InvoiceAmtFrom", sm.InvoiceAmountFrom);
        paramChk[5] = new SqlParameter("@InvoiceAmtTo", sm.InvoiceAmountTo);
        paramChk[6] = new SqlParameter("@DistanceFrom", sm.DistanceFrom);
        paramChk[7] = new SqlParameter("@DistanceTo", sm.DistanceTo);
        paramChk[8] = new SqlParameter("@InvoiceDateFrom", sm.InvoiceDateFrom);
        paramChk[9] = new SqlParameter("@InvoiceDateTo", sm.InvoiceDateTo);
        paramChk[10] = new SqlParameter("@ShipmentDateFrom", sm.ShipmentDateFrom);
        paramChk[11] = new SqlParameter("@ShipmentDateTo", sm.ShipmentDateTo);
        paramChk[12] = new SqlParameter("@ShipperZip", sm.ShipperZip);
        paramChk[13] = new SqlParameter("@ConsigneeCityState", sm.ConsigneeCityState);
        paramChk[14] = new SqlParameter("@ConsigneeZip", sm.ConsigneeZip);
        paramChk[15] = new SqlParameter("@ConsigneeCode", sm.ConsigneeCode);
        paramChk[16] = new SqlParameter("@ConsigneeName", sm.ConsigneeName);
        paramChk[17] = new SqlParameter("@WhseID", sm.WhseID);
        paramChk[18] = new SqlParameter("@LTLFTL", sm.LTLFTL);
        paramChk[19] = new SqlParameter("@TRSO", sm.TRSO);
        paramChk[20] = new SqlParameter("@FTL", sm.FTL);
        ds = dp.GetDataSetSProcWithProc("uspFreight_SearchFreight", paramChk);

        DataTable dt = ds.Tables[0];

        return new JsonResult(dt);
    }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-23 02:06:36

尝试将[Route("api/[controller]")]更改为[Route("api/[controller]/[action]")],则SummaryReportController中的默认操作路由将为api/SummaryReport/{actionname}.You可以参考官方的doc了解路由。

例如,GetSummaryReport操作的路由将是api/SummaryReport/GetSummaryReportGetSummaryReportWithParams操作的路由将是api/SummaryReport/GetSummaryReportWithParams...

如果要从query获取SummaryReport sm,可以在it.Here成为工作演示之前添加[FromQuery]

代码语言:javascript
运行
复制
[Route("api/[controller]/[action]")]
    [ApiController]
    public class SummaryReportController : ControllerBase
    {
        [HttpGet]
        public void GetSummaryReport()
        {

            
        }
        [HttpGet]
        public void GetSummaryReportWithParams([FromQuery]SummaryReport sm)
        {
           
        }

    }
    public class SummaryReport
    {
        public int Id { get; set; }
        public string Name { get; set; }

    }

结果:

票数 1
EN

Stack Overflow用户

发布于 2021-11-22 14:47:47

将参数添加到第二个端点的管线[HttpGet("{sm}")]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70067453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档