什么会导致MVC4控制器只返回状态代码而不是部分视图?

tre*_*orc 3 c# ajax jquery asp.net-mvc-4

这是一个奇怪的问题,但后来我有一个非常奇怪的情况.在我的开发服务器(IIS和IIS Express)上,我发出一个ajax请求并返回一个表单.然后用户通过ajax帖子发回表单,如果有任何验证错误,控制器会发回部分视图,响应代码为400.在我的ajax方法中,我拦截任何400个错误并重新显示带有验证错误的表单.

我的问题是,当我将我的应用程序上传到我的生产服务器时,所有我得到的验证错误是没有局部视图的400响应.我甚至不知道从哪里开始?这是我尝试过的,我正在使用的库,以及一些示例代码.

ASP.net MVC4,流畅验证,jQuery,不显眼的验证,malsup-ajaxsubmit

在我的生产服务器上......

  1. 加载表单的部分视图按预期工作.这告诉我应用程序找到我的视图没有问题,因为如果验证失败,将重新显示相同的视图.
  2. 我的控制器使用流畅的验证正确检测模型状态错误并用400响应(只是没有查看).
  3. 我使用ajaxsubmit的ajax帖子使用ajax正确地发布到服务器.
  4. 使用firebug我逐步执行我的ajax方法,确实返回了400错误,但xhr.responseText上的唯一内容是"错误请求".没有局部视图.我的开发机器再次完美运行.

这是一些代码.

我的表格获取请求:

public ActionResult CreateMedicalEvent(int userId)
{
    var model = new EventModel { MedicalEventUserId = userId };

    return PartialView("_Event.Create", model);
}
Run Code Online (Sandbox Code Playgroud)

我的表格发布:

[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
        }
Run Code Online (Sandbox Code Playgroud)

我的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);
            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

我希望有更多的代码可以发布,但这并不是那么复杂.我在生产服务器上遗漏了一些奇怪的dll文件吗?两台服务器都安装了MVC4.丢失.请求帮助.谢谢.

Ami*_*itd 7

添加到@STW的答案,尝试添加到您的web.config

<system.webServer>

  <httpErrors errorMode=”Detailed” />

</system.webserver>
Run Code Online (Sandbox Code Playgroud)

看到IIS错误响应.

另请参阅这些链接

了解400错误请求异常ASPNET MVC IIS7和错误请求