2017-09-25 21 views
-1

に取り組んでいない:のResponse.Writeは、私は次のコードでC#のWebサービス(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:コメントコードは私が持っているものであり、働かないものです。あなたの方法の上部に

+0

どのWebサーバーですか? –

答えて

-1

、あなたがResponse.Endを呼び出す前に、応答に書き込む前に、下部にResponse.Clear

を呼び出し、Response.Flushを呼び出します。

編集
あなたが実際に終了するのではなく、Response.Closeを使用したいと思います。 Endはスレッドを打ち切るため、要求を閉じる厳しい方法です。 documentation for HttpResponse#Close 1としてEDIT2

は、あなたがHttpApplication#CompleteRequestを呼び出したいとしています。

+0

まだ動作しませんが、私はEdit2を取得しません。 CompleteRequestメソッドをどのように呼び出す必要がありますか? – Salatiel

+0

私は解決策を見つけました:https://stackoverflow.com/questions/11526396/how-to-response-write-on-iis7-5、問題はweb.configファイルにありました。 – Salatiel

関連する問題