【问题标题】:status of 404 POST after used HttpContext.Current.Request.Form Web API使用 HttpContext.Current.Request.Form Web API 后 404 POST 的状态
【发布时间】:2018-02-25 16:21:52
【问题描述】:

我在 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 控制器中有 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 控制器。 这是我在 Web API 控制器中的请求表单:

但是当我尝试按键获取价值时:

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

我在 Ajax POST 中出现 404 错误。

[HttpException]:路径“/Widget/PostDataWidget/”的控制器未找到或未实现 IController。 在 System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext,类型 controllerType) 在 System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext,字符串控制器名称) 在 System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext,IController& 控制器,IControllerFactory& 工厂) 在 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext,AsyncCallback 回调,对象状态) 在 System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext,AsyncCallback 回调,对象状态) 在 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext 上下文,AsyncCallback cb,对象 extraData) 在 System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep 步骤) 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,Boolean& completedSynchronously) -->

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

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

【问题讨论】:

    标签: ajax post asp.net-web-api2 http-status-code-404


    【解决方案1】:

    我发现了错误。

    此 Ajax 帖子位于我的按钮的单击事件中。我将按钮添加到表单中。表单为空,表单没有操作方法和类型方法。

    此按钮的类型为:提交。当我将类型从提交更改为按钮时,我的 Ajax POST 就起作用了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-28
      • 1970-01-01
      • 1970-01-01
      • 2022-06-12
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2015-07-19
      相关资源
      最近更新 更多