这是一个奇怪的问题但是我有一个非常奇怪的情况。在我的开发服务器(IIS和IIS Express)上,我发出一个ajax请求并返回一个表单。然后用户通过ajax帖子发回表单,如果有任何验证错误,控制器会发回部分视图,响应代码为400.在我的ajax方法中,我拦截任何400错误并重新显示带有验证错误的表单。
我的问题是,当我将我的应用程序上传到我的生产服务器时,所有我得到的验证错误是没有局部视图的400响应。我甚至不知道从哪里开始?这是我尝试过的,我正在使用的库,以及一些示例代码。
ASP.net MVC4, 流利的验证, jQuery,unobtrusive validation,malsup-ajaxsubmit
在我的生产服务器上......
这是一些代码。
我的表格获取请求:
public ActionResult CreateMedicalEvent(int userId)
{
var model = new EventModel { MedicalEventUserId = userId };
return PartialView("_Event.Create", model);
}
我的表格发布:
[HttpPost]
public ActionResult CreateMedicalEvent(EventModel model)
{
if (!ModelState.IsValid)
{
Response.StatusCode = 400;
return PartialView("_Event.Create", model);//this does not get returned on production server
}
//the rest of my code if validation passess
}
我的ajax方法:
$('.se-form').ajaxForm({
delegation: true,
beforeSubmit: function() {
ajaxHelpers.modalProcess();//modal progress bar
},
success: function(data) {
$.modal.close();
//handle a successful post
},
error: function(xhr) {
$.modal.close();
if (xhr.status == 400) {
slideEdit.seObj.empty();//this is my form object
slideEdit.seObj.append(xhr.responseText);//all I get is "Bad Request" from production server
$.validator.unobtrusive.parse($('form', slideEdit.seObj));
ajaxHelpers.bindDates(); //because we need to bind event AND format date, we have to do this here
utilities.formatDecimal();
} else {
ajaxHelpers.exc(xhr);
}
}
});
我希望发布更多代码,但这并不是那么复杂。我在生产服务器上遗漏了一些奇怪的dll文件吗?两台服务器都安装了MVC4。丢失。请求帮助。感谢。
答案 0 :(得分:7)
添加到@STW的答案,尝试添加到您的web.config
<system.webServer>
<httpErrors errorMode=”Detailed” />
</system.webserver>
查看IIS错误响应。
另请参阅这些链接了解更多信息
Understanding 400 Bad Request Exception 和ASPNET MVC IIS7 and Bad Request
答案 1 :(得分:4)
400
表示错误请求,这意味着MVC并不认为它可以处理正在发送的请求 - 在这种情况下甚至不会调用控制器操作。尝试启用详细的错误输出,或在Visual Studio中对站点运行请求,看看是否可以获取异常详细信息。它可能发生在路由,控制器构造,动作调用或模型绑定中。
答案 2 :(得分:-1)
在我的情况下,我不小心将PartialView.cshtml
文件放在了错误的View目录中。将其移至右侧View目录,不再有400
个错误请求。卫生署!