【发布时间】: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