2 votes

Comment déboguer un WebMethod dans ASP.NET

J'ai le WebMethod suivant dans mon fichier fileName.asmx.cs.

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetData(string value)
    {
        //-----
        //Code respectif interrogeant la base de données
        //-----
    }

Voici l'appel ajax correspondant en utilisant jQuery

getData: function (type) {        
        var response = "";
        $.ajax({
            type: "POST",
            dataType: 'json',
            url: "../GetData",
            data: '{value:' + type.toString() + '}',
            async: false,
            contentType: "application/json; charset=utf-8",
            success: function (msg) {
                console.log('succes', msg)
                response = msg;
            }
        });
        return response.d;
    }

J'ajoute des points d'arrêt dans mon WebMethod pour le débogage, cependant il n'y entre pas. J'essaie de le faire sur mon localhost:2133, en référence à certaines réponses SO j'ai également essayé d'attacher le processus suivant mais sans succès.

entrer la description de l'image ici

Sans débogage, je ne peux pas résoudre les erreurs, comme j'ai déjà perdu quelques heures, j'ai posté ici.

Quelqu'un peut-il me guider (quelques captures d'écran seront plus utiles) comment déboguer un WebMethod en ASP.NET?

Mises à jour 1: J'ai également essayé de mettre Console.WriteLine() dans le WebMethod. Mais rien n'apparaît à l'écran de sortie de VS2012.

Mises à jour 2: J'ai une erreur lors de la construction du fichier, mais le site est en ligne sur mon localhost. Cette erreur me pose-t-elle des problèmes pour déboguer le WebMethod? ou pour être clair

Seul un code propre (sans erreur) peut être débogué?

2voto

Sevin7 Points 176

Je fais tout mon débogage de site Web en ASP.NET en insérant des données dans un journal de débogage dans ma base de données. Cette méthode est très simple et fonctionne toujours, peu importe comment votre serveur a été appelé par le client (car un chargement de page, un appel à un service Web et un rappel d'une page entraînent tous un fonctionnement serveur différent et des états de retour différents).

De plus, l'utilisation de l'onglet Réseau des outils de développement Chrome est extrêmement utile pour déboguer les méthodes Web.

  1. Ouvrez une page qui va effectuer une demande web
  2. Ouvrez les outils de développement de Chrome, allez à l'onglet Réseau
  3. Envoyez la demande web. Vous verrez maintenant une ligne ajoutée aux résultats dans l'onglet Réseau avec le nom de la méthode web et son URL. Cliquez sur ce nom et vous verrez 5 onglets: En-têtes, Aperçu, Réponse, Cookies et Chronologie. Si votre méthode web a généré une erreur et que votre site est configuré pour afficher la trace de la pile sur la page aspx, alors la page 'Réponse' vous montrera en fait la page d'erreur rendue qui a été créée.

0voto

Praveen Points 19102

Après une longue lutte (toute une journée), j'ai trouvé ce qui me causait le problème. La raison pour laquelle je n'ai pas pu déboguer est due à 2 erreurs.

Je n'ai pas pensé à corriger parce que c'était simplement une erreur de licence. Maintenant j'ai appris que seul un Service Web propre (sans erreur) peut être débogué.

Alors que pour le débogage via IIS, j'ai utilisé le processus w3wp.exe en y attachant.

Cela m'a beaucoup aidé http://forums.iis.net/t/1154992.aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X