【发布时间】:2017-12-10 18:44:10
【问题描述】:
我有这个(简化的)ASP.NET Core Web API 控制器。 GET 和 POST 操作在我自己的机器上运行良好。但是,部署到 Azure 只有 GET 操作才能正常工作。 POST 操作导致 404。有什么想法吗?
namespace Foo
{
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
[RequireHttps]
[Produces("application/json")]
[Area("Foo")]
[Route("[area]/Api/[controller]")]
public class BarController : Controller
{
[HttpGet]
public IEnumerable<string> Get()
{
return new[] {"Hello", "World!"};
}
[HttpPost]
public void Post([FromBody] InputModel model)
{
}
public class InputModel
{
public int Foo { get; set; }
}
}
}
它是一个面向完整 .NET 框架的 ASP.NET Core MVC 应用程序。它被部署为 Azure Web 应用程序。我已经使用 Postman 在本地计算机和 Azure 中测试了这两个操作。
【问题讨论】:
-
检查你的网络配置,看看是否允许 POST 请求
-
我发现如果我将内容类型更改为几乎除 application/json 之外的任何其他内容(给出 404),我会得到 415“不支持的媒体类型”。但这仍然不能解决我的问题。
-
您是否发布了 ModelBinder 可以绑定到
InputModel类的内容? -
是的,@RickvandenBosch。我在查询之间复制了完全相同的文字输入数据。
-
我刚刚在一个干净的 asp.net core 2.0 MVC API 项目中创建了这个控制器。然后我通过 Visual Studio 将它部署到一个全新的应用服务。一切正常。不知道你身边发生了什么。我只能想象它与“它是一个针对完整 .NET 框架的 ASP.NET Core MVC 应用程序”有关。尝试在 .net 核心网络应用程序中独立运行您的控制器,如果这可行,那么您可能更接近一步。那可能只是一些路由错误。我从来没有将 .net core 2.0 项目集成到 .net 框架应用程序中,所以很遗憾,我对此一无所知。
标签: azure post asp.net-core-webapi