我正在努力解决这个问题.在本地机器(Win7 / VS2010 / IIS 7.5)和另一台相同的开发人员机器上,以下代码返回500状态码,响应文本“无法找到具有指定电子邮件地址的用户”.
当我将站点部署到我的测试服务器(Win2008 R2 / IIS7.5)时,它返回正确的状态代码,但内容类型设置为“text / html”,而responseText不包含该消息.
我已经尝试关闭服务器上的自定义错误,这没有任何区别.任何人都可以发现问题是什么?
我有一个使用AjaxHelper.BeginForm方法配置的表单:
@using (Ajax.BeginForm("FindUser",new AjaxOptions {OnSuccess="findComplete",OnFailure="findFailed"}) { <fieldset> @Html.EditorFor(m => m.UserEmail) <div class="form-item button search"> <input type="submit" value="Find"/> </div> <div id="find-err" class="message error hidden"> <div class="contents"></div> </div> </fieldset> }
function findFailed(result) { var error = result.responseText; if (error) { $('#find-err .contents').text(error).slideDown(); } }
控制器动作捕获任何错误并返回一条消息:
[HttpPost] public ActionResult FindUser(FindUserModel model) { try { // code to find user if (user == null) { throw new Exception("Could not locate user with specified email address."); } if (Request.IsAjaxRequest()) { return Json(new { id = user.Id,name = user.Name },JsonRequestBehavior.AllowGet); } model.FoundUser = user; return View("Details",model); } catch (Exception ex) { if (Request.IsAjaxRequest()) { Response.StatusCode = 500; return Json(ex.Message,JsonRequestBehavior.AllowGet); } ModelState.AddModelError("UserEmail",ex.Message); return View(model); } }
任何帮助将非常感谢:)