gpt4 book ai didi

json - 如何通过 JSON 返回 ASP.NET MVC 3.0 中错误的正确响应?

转载 作者:行者123 更新时间:2023-12-03 22:21:22 25 4
gpt4 key购买 nike

我正在努力解决这个问题。在我的本地计算机(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>
}

使用错误处理 JavaScript 函数:

function findFailed(result) {
var error = result.responseText;
if (error) {
$('#find-err .contents').text(error).slideDown();
}
}

Controller 操作捕获任何错误并返回一条消息:

[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);
}
}

任何帮助将不胜感激:)

最佳答案

看起来 IIS 正在吃掉响应并尝试用它来处理自定义错误。

尝试设置

Response.TrySkipIisCustomErrors = true

在你的渔获中。

或者设置以下配置值:

<httpErrors errorMode="Custom" existingResponse="PassThrough"/>

关于json - 如何通过 JSON 返回 ASP.NET MVC 3.0 中错误的正确响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6456265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com