【发布时间】:2017-02-14 21:34:30
【问题描述】:
我已部署到 QA 服务器,该解决方案对我来说运行良好,但在一些限制性更强的网络上,它的行为会有所不同。代码如下:
function RegisterSubmit() {
ShowSpinner();
jQuery.post("@Url.Action("Register", "Home")", jQuery('form#register-form').serialize(),
function (data) { }).done(function (successData) {
// handle success
}).fail(function (xhr, textStatus, errorThrown) {
ShowError('error-message-register', errorThrown);
grecaptcha.reset();
HideSpinner();
});
}
这成功调用了控制器,该控制器将日志写入数据库,但出现异常,我可以看到这一切正常。它似乎失败的地方是错误是如何返回给浏览器的。我正在使用以下,通常可以正常工作:
[AllowAnonymous]
[HttpPost]
public ActionResult Register(RegisterViewModel model, string returnUrl)
{
try
{
model.Validate();
RecaptchaValidator.Validate(TenantId, Request);
// happy path
}
catch (Exception ex)
{
LogException(ex);
return ThrowJsonError(ex);
}
}
它使用以下内容:
public JsonResult ThrowJsonError(string message)
{
Response.StatusCode = (int) System.Net.HttpStatusCode.BadRequest;
Response.StatusDescription = message;
return Json(new {Message = message}, JsonRequestBehavior.AllowGet);
}
仅在这一网络上,它不显示错误消息,而是显示“错误请求”。有什么想法/解决方案吗?
更新 附带说明一下,此代码的成功案例运行良好,因此到达服务器没有问题。只有当我们在控制器中抛出错误并希望它在视图中被捕获并显示在浏览器中时,才会出现此问题。
【问题讨论】:
-
记录的异常是什么??
-
这是我自定义的
ValidationExceptionmodel.Validate()。正如预期的那样,我希望向用户显示该异常的Message部分。它通常会发生,除了在那个环境中。 -
环境是什么意思。配置是什么?
-
他们的网络管理员似乎创建了相当严格的设置。许多网站被禁止,我们经常需要请求 IP 或端口被解锁。 Firefox 和装订也存在问题,但测试不适用于 Chrome,所以这不是问题。换句话说,我没有完全处理这个问题,但我想确保没有明显的代码问题。
-
更新:我补充了一点说明
标签: jquery asp.net-mvc