如果HttpStatusCodeResult在描述

时间:2017-05-10 16:10:12

标签: asp.net ajax asp.net-mvc asp.net-ajax

假设我们有一个简单的盐土mvc4控制器以及一个返回BadRequest响应的动作,故意将新行放在错误描述中:

public class SaltOfTheEarthController : Controller
{
    public ActionResult SimpleAction()
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "foo\nbar");
    }
}

我们现在通过jquery ajax调用上面的控制器,如下所示:

$.ajax({
        url: "/SaltOfTheEarth/SimpleAction",
        method: "GET"
    })
    .done(function() { console.log("** done"); })
    .fail(function () { console.log("** fail"); });

人们会期望asp.net基础设施能够通过抛出一个争论者(由于状态描述中的换行符)来检测新行的存在并进行干预,这自然会导致内部的错误响应。

相反(至少在我正在测试所有这些的机器上)发生的事情是'SimpleAction'方法以一种神秘的方式失败,因为ajax响应不包含任何标题或任何其他信息。

如果firefox执行了ajax调用,那么事情会变得更糟,那么在firefox放弃之前,控制器动作会被连续5次连续调用(虽然这个第二个怪癖不会发生 - 但ajax调用马上就失败了。)

两个问题:

  • 因为\ n字符引起了很多麻烦,为什么在检测到响应头字段中的\ n字符时,HttpStatusCodeResult(或asp.net的其他内部齿轮)的构造函数不能正常工作? (可能是由于性能问题?)

  • 为什么firefox重试相同的动作10次但chrome不重试?重试背后的逻辑是什么?

0 个答案:

没有答案