使用HttpContext.Current.Request.Form Web API后的404 POST状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用HttpContext.Current.Request.Form Web API后的404 POST状态相关的知识,希望对你有一定的参考价值。

我在MVC中使用Ajax POST到Web API

    var formData = new FormData();
    formData.append('idGuid', func.WpPluginManager.Identity);
    formData.append('userName', func.modalElement.userName.val());

    var url = func.info.loadArray.IsLocalVersion === true ? '/api/Widget/PostDataWidget/' : func.dataArray.serverUrl + '/api/Widget/PostDataWidget/';

    jQuery.ajax({
        url: url,
        type: "POST",
        dataType: "json",
        data: formData,
        crossDomain: true,
        processData: false,
        contentType: false,
        cache: false,
        success: function (data) {
            debugger
        },
        error: function (err) {
            alert(err.responseJSON);
        }

    });

我在Web API Controller中有POST HttpResponseMessage

    [HttpPost]
    [AllowAnonymous]
    [Route("api/Widget/PostDataWidget/")]
    public HttpResponseMessage PostDataWidget()
    {
        if (Request == null) { return Request.CreateResponse(HttpStatusCode.BadRequest); }
        try
        {
            var idGuid = HttpContext.Current.Request.Form.Get("idGuid");
            var userName = HttpContext.Current.Request.Form.Get("userName");

            return Request.CreateResponse(HttpStatusCode.OK);
        }
        catch (Exception ex)
        {
            //Implement ex
            throw;
        }
    }

一切都好。我可以将数据从Ajax POST传递到我的Web Api Controller。这是我在Web API控制器中的请求表单:enter image description here

但是当我试图通过密钥获得价值时:

var idGuid = HttpContext.Current.Request.Form.Get(“idGuid”);

我在Ajax POST中遇到404错误。

[HttpException]:未找到路径'/ Widget / PostDataWidget /'的控制器或未实现IController。在System.Web.Mvc.DevaultControllerFactory.GetControllerInstance(RequestContext requestContext,Type controllerType)中的System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext,String controllerName)at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext,IController&controller) System.Web.Mvc上System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext,AsyncCallback回调,对象状态)的System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext,AsyncCallback回调,对象状态),IControllerFactory&factory) System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep)上的System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()中的.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context,AsyncCallback cb,Object extraData)步骤)在System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously) - >

哪里可能是问题。我做错了什么?

p.S:首先在Global.asax注册中使用WebApiConfig。

答案

我发现了什么是错误。

这个Ajax帖子位于我的button.IS添加按钮的单击事件中。表单为空,表单没有操作方法和类型方法。

此按钮的类型为:submit。当我将类型从提交更改为按钮时,我的Ajax POST然后工作。

以上是关于使用HttpContext.Current.Request.Form Web API后的404 POST状态的主要内容,如果未能解决你的问题,请参考以下文章

在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?

今目标使用教程 今目标任务使用篇

Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)

MySQL db 在按日期排序时使用“使用位置;使用临时;使用文件排序”

使用“使用严格”作为“使用强”的备份

Kettle java脚本组件的使用说明(简单使用升级使用)