Response.Write 不适用于生产 [重复]

Posted

技术标签:

【中文标题】Response.Write 不适用于生产 [重复]【英文标题】:Response.Write does not working on Production [duplicate] 【发布时间】: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:注释代码是我有的和没有工作的东西。

【问题讨论】:

什么网络服务器? 【参考方案1】:

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

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

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

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

【讨论】:

仍然无法正常工作,但我没有得到 Edit2。我应该如何调用 CompleteRequest 方法? 我找到了解决方案:***.com/questions/11526396/…,问题出在 web.config 文件中。

以上是关于Response.Write 不适用于生产 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Response.Write输出导致页面变形和页面白屏解决办法

用于代码拆分的 Webpack 配置不适用于生产构建

Mailchimp 不适用于生产 [laravel on azure]

推送通知不适用于生产

Azure 管道不适用于生产

推送通知不适用于生产