【问题标题】:Response.Write does not working on Production [duplicate]Response.Write 不适用于生产 [重复]
【发布时间】:2018-03-06 19:30:59
【问题描述】:

我有一个带有以下代码的 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;
}

这个ASMX是用AJAX调用的,它的错误函数有:

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:注释代码是我有的和没有工作的东西。

【问题讨论】:

  • 什么网络服务器?

标签: javascript c# ajax web-services asmx


【解决方案1】:

在您的方法顶部,在写入响应之前,调用Response.Clear

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

编辑
您实际上会想要使用 Response.Close 而不是 End。 End 是关闭请求的一种苛刻方式,因为它会中止线程。

编辑2
根据documentation for HttpResponse#Close,您需要致电HttpApplication#CompleteRequest

【讨论】:

  • 仍然无法正常工作,但我没有得到 Edit2。我应该如何调用 CompleteRequest 方法?
  • 我找到了解决方案:stackoverflow.com/questions/11526396/…,问题出在 web.config 文件中。
猜你喜欢
  • 1970-01-01
  • 2018-02-28
  • 2013-07-13
  • 2018-03-15
  • 2016-08-30
  • 2021-05-04
  • 2018-02-22
  • 2015-09-07
  • 1970-01-01
相关资源
最近更新 更多