2017-09-25 68 views
-1

工作,我有一個C#的WebService(ASMX)用下面的代碼:的Response.Write不生產

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:評論代碼是我有和沒有工作的東西。

+0

什麼web服務器? –

回答

-1

在你的方法頂部,寫入響應之前,調用Response.Clear

在底部,你叫Response.End之前,調用Response.Flush

編輯
你真的想使用Response.Close,而不是結束。 End是關閉請求的嚴酷方式,因爲它會中止該線程。

EDIT2
按照該documentation for HttpResponse#Close,你會想打電話HttpApplication#CompleteRequest

+0

仍然無法正常工作,但我沒有收到Edit2。我應該如何調用CompleteRequest方法? – Salatiel

+0

我找到了一個解決方案:https://stackoverflow.com/questions/11526396/how-to-response-write-on-iis7-5,問題出在web.config文件中。 – Salatiel