Response.Write不适用于生产

时间:2017-09-25 18:24:13

标签: javascript c# ajax web-services asmx

我有一个C#WebService(ASMX),代码如下:

if (!SomeValidation())
{
    //context.Response.ContentType = "application/json";
    //context.Response.ContentType = "text/plain";
    context.Response.ContentType = "application/text";
    context.Response.StatusCode = 400;
    context.Response.Status = "400 Bad Request";
    context.Response.StatusDescription = "Bad Request";
    context.Response.Write("Error Message");
    //context.Response.Write("{ ErrorMessage: "Error Message" }");
    context.Response.End();
    return;
}

使用AJAX调用此ASMX,其错误函数具有:

error: function (request, status, error) {
    if (request.status === 400) {
        ShowMessage("nWarning", request.responseText);
        console.log(request);
    } else {
        ShowMessage("nFailure", "Error.");
        console.error(request);
        console.error(status);
        console.error(error);
    }
}

当我在我的机器上执行代码时,会显示正确的消息,但是当我发布项目时,它不起作用并显示状态代码消息。

为什么会这样?

OBS:评论的代码是我拥有和不工作的东西。

1 个答案:

答案 0 :(得分:-1)

在您的方法的顶部,在写入回复之前,请致电Response.Clear

在底部,在致电Response.End之前,请致电Response.Flush

修改
您实际上想要使用Response.Close而不是结束。结束是关闭请求的一种苛刻方式,因为它中止了线程。

<强> EDIT2
根据{{​​3}},您需要拨打documentation for HttpResponse#Close