c# n'est exceptionnellement pas correctement capturé par jquery ajax
ok, j'ai un problème avec l'environnement de production et comment jquery ajax capture de l'erreur.
Dans mon environnement de développement sur ma machine locale lors de l'ajax de jquery appelle un service web [webmethod] et le webmethod jette une erreur spécifique, l'ajax de jquery capte bien mais dans la production envirnment l'ajax de jquery capture de l'erreur, mais le message est générique "Il y avait une erreur dans le traitement de la demande." par "Erreur Interne du Serveur"
par exemple
Le code c#
[WebMethod]
public String dostuff(String Auth){
//some code here
//if error occurs
throw new Exception("Some specific error message");
return "ok";
}
l'ajax de jquery appel
var data = JSON.stringify({ Auth: "some data here" }, null);
$.ajax({
type: "POST",
url: '/Services/memberService.asmx/dostuff',
data: data,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (result) {
alert(result.d); //alert ok
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("responseText=" + XMLHttpRequest.responseText + "\n textStatus=" + textStatus + "\n errorThrown=" + errorThrown);
}
});
sur ma machine locale la XMLHttpRequest.responseText est "Certains message d'erreur"
sur l'environnement de production la XMLHttpRequest.responseText est "Il y avait une erreur dans le traitement de la demande."
l'environnement local est windows 7 home premium avec IIS 7.5.7600.16385
l'environnement de production est Windows Server 2008 R2 avec IIS 7.5.7600.16385 (de même que le développement de l'environnement)
pourquoi la différence et comment faire de l'environnement de production jeter l'erreur spécifique?
********* juste un suivi .. tnx Justin *************
j'ai ajouté web.fichier de configuration à l'intérieur du dossier des services (Doh... je me demande pourquoi je ne pense pas que cela)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="Off" />
</system.web>
</configuration>
<customErrors>
section du site web.config. Généralement on ne veut pas exposer les détails de l'exception à l'utilisateur final.ok... mais est-il un moyen pour activer ce seulement pour les services web? actuellement, il est RemoteOnly
C'est exactement la même question que j'ai posté il ya longtemps ici stackoverflow.com/questions/8059780/...
Vous pouvez utiliser le
<location>
élément à préciser qu'il s'applique uniquement aux services web, au moins si vous les avez dans un dossier séparé. Je n'ai jamais essayé sans un dossier séparé.OriginalL'auteur robert | 2012-02-22
Vous devez vous connecter pour publier un commentaire.
Par défaut .NET Applications sont configurées pour afficher uniquement spécifique Exception des informations pour le serveur local.
C'est ainsi que les attaquants ne puissent pas obtenir des informations sur l'Exception au sujet de votre site sur la base de leurs attaques. Il est généralement considéré comme une mauvaise idée de changer ce comportement.
Si vous devez, cependant, vous pouvez modifier:
:
Et si vous souhaitez afficher les erreurs pour les Services de dossier:
Mise à jour de ma réponse. Il suffit d'ajouter la totalité du bloc de l' <configuration></configuration> élément.
awsome ty.. je vais faire un essai... btw, vous êtes absent de la > tag 🙂
devons-nous mettre ce code d'emplacement sous le dossier des services ? qui contient le asmx ? ou doit-on les mettre dans le web.config ?
OriginalL'auteur Justin Niessner