2017-09-25 6 views
-1

J'ai un C# WebService (ASMX) avec le code suivant:Response.Write ne pas travailler sur la production

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; 
} 

Ce ASMX est appelé en utilisant AJAX, et sa fonction d'erreur a:

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); 
    } 
} 

Lorsque j'exécute le code sur mon ordinateur, le message correct s'affiche, mais lorsque je publie le projet, il ne fonctionne pas et affiche le message de code d'état.

Pourquoi cela se produit-il?

OBS: Le code commenté sont des choses que j'ai et qui n'ont pas fonctionné.

+0

Quel serveur web? –

Répondre

-1

En haut de votre méthode, avant d'écrire à la réponse, appelez Response.Clear

Au fond, avant d'appeler Response.End, appelez Response.Flush.

Modifier
Vous voulez utiliser Response.Close au lieu de fin. End est une manière dure de fermer une demande, car elle interrompt le thread.

Edit2
Comme par le documentation for HttpResponse#Close, vous allez vouloir appeler HttpApplication#CompleteRequest.

+0

Ne fonctionne toujours pas, mais je ne reçois pas le Edit2. Comment appeler la méthode CompleteRequest? – Salatiel

+0

J'ai trouvé une solution: https://stackoverflow.com/questions/11526396/how-to-response-write-on-iis7-5, le problème était dans le fichier web.config. – Salatiel