使用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控制器中的请求表单:
但是当我试图通过密钥获得价值时:
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有三种方式(不使用,动态使用,静态使用,默认是动态使用)