Api Post方法不适用于.net核心天蓝色产品

时间:2019-05-15 09:38:07

标签: azure api asp.net-web-api asp.net-core azure-web-sites

我正在使用.net核心公开API。当我从邮递员那里调用api时,某些方法未命中,得到404 not found错误消息。

  [HttpPost]
    public async Task<bool> AddLogs([FromBody]List<LogModel> model)
    {
        var result = false;
        foreach (var item in model)
        {
            result = await _logService.Insert("Logs", item);
        }

        return result;
    }

   public class LogModel: TableEntity
{
    public int Status { get; set; }
    public bool IsBreak { get; set; }
    public string Location { get; set; }
    public DateTime StartDateAndTime { get; set; }
    public DateTime EndDateAndTime { get; set; }
    public string Remarks { get; set; }
    public int Id { get; set; }
  }

当我调用api'AddLogs'时,出现找不到消息的错误消息。

但是尝试时,

 [HttpPost]
    public async Task<bool> Post()
    {
        return true;
    }

它将返回真实值。

但是我注意到当我在localhost'AddLogs'api中调用时工作正常。它将击中api。但是当我以天蓝色发布时,它表明我没有找到。

1 个答案:

答案 0 :(得分:0)

我在自己的网站上进行了测试,效果很好。

这样做的原因是,部署或默认的ASP.NET Core Web API模板在网站的根目录中不包含默认文档。例如,index.htm,defualt.aspx,default.htm是默认文档,如果在访问URL时未提供特定文件,则IIS将提供它们。

如果您有多个httppost方法,则可以设置[HttpPost("AddLogs/")]来指定AddLogs操作。请记住,还请在Configure方法中添加以下代码。

app.UseMvc(routes =>
{
    routes.MapRoute(name: "default", template: "api/{controller}/{action}/{id?}");
});