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输出导致页面变形和页面白屏解决办法