繁体   English   中英

GET请求有效,但Web API 2中的POST请求404

[英]GET requests work but POST requests 404 in Web API 2

我有一个使用MVC 5和Web API 2的项目。在本地,对Web API控制器的HTTP GET和POST请求都有效。 将网站发布并部署到外部环境后,GET请求仍然有效,但POST请求的结果为404。

这是我的API控制器:

public class ExampleApiController : ApiController
{
    [HttpPost]
    [Route("GetRoles")]
    public IHttpActionResult GetRoles([FromBody] string userName)
    {
        // ...
        return Json(response);
    }

    [HttpGet]
    [Route("GetUsers")]
    public HttpResponseMessage GetUsers()
    {
        HttpResponseMessage response;
        // ...
        return response;
    }
}

这是我的WebApiConfig.cs文件:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

        config.Routes.MapHttpRoute(
            name: "Web API default route",
            routeTemplate: "api/{controller}/{action}",
            defaults: null
        );
    }
}

这是我的Global.asax文件:

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

其他注意事项:

  • 我已经验证了客户端发出的POST请求的格式正确。
  • 我将以下代码添加到Web.config

     <system.webServer> <modules runAllManagedModulesForAllRequests="true" /> </system.webServer> 
  • 我将应用程序部署到的环境具有需要身份验证的子域(例如,URL看起来像http://qa.example.com )。 我正在使用(例如) http://username:password@qa.example.com/GetUsers

  • 我的控制器未使用RoutePrefix属性。

有任何想法吗?

该问题已解决-对将来的读者没有太大帮助,但该问题与服务器端的第三方安全客户端有关,该客户端专门阻止了该请求。 朱利安诺的评论帮助我实现了这一目标。

我建议使用Web API文档(帮助页面)或大摇大摆地检查您的Web api方法的实际URL和参数。 你必须错过一些东西。

几天前,我遇到了类似的问题(post方法在本地运行,但在QA env上不工作),但是那一次我遇到405错误

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM