2010-07-21 6 views
0

Je n'arrive pas à comprendre pourquoi mon service Web ne fonctionne pas correctement lorsqu'il est appelé à partir de mon application asp.net en production uniquement.Problème de débogage du service Web asp.net

Je suis capable d'exécuter mon application asp.net localement, en appelant le service Web (en production) et il se termine correctement.

Je suis capable de modifier le web.config pour me permettre d'utiliser le formulaire de test sur le service Web de production et il appelle correctement.

J'appelle le service Web dans une DLL partagée, et je vérifie déjà que je reçois réellement la DLL mise à jour.

Il s'agit d'un service Web très basique pour consigner les exceptions sur nos sites qui ne sont pas traitées ailleurs. J'ajoute des paramètres supplémentaires et je le déplace vers un autre projet afin qu'il soit regroupé avec un plus grand nombre de nos services Web. Il est dans son propre fichier asmx appelé ExceptionServices

Mon dll partagé a une classe ErrorHandler qui appelle (à ce stade, une méthode d'essai) TestEmail(string to) et tout ce qui ne me envoie un e-mail.

Comme je l'ai dit, lors de l'exécution de mon application localement, il appelle le service Web de production et tout est bon. Je cours dans un environnement hébergé et suis incapable d'installer les outils de débogage à distance, donc je ne peux pas passer par le code de production (à moins que quelqu'un ne connaisse des trucs).

Il semble comme cela devrait fonctionner (se cogner la tête sur le clavier) ...

Voici ma méthode web de base:

[WebMethod] 
    public void TestEmail(string to) 
    { 
     MailMessage mm = new MailMessage("[email protected]", to, "test", "body here"); 
     SmtpClient client = new SmtpClient("localhost"); // already tried tweaking smtp server, and all my options work when I use the test form 
     client.Send(mm); 
    } 

classe ErrorHandler dans le dll partagé

public class ErrorHandler 
{ 
    public static void ThrowError(Exception ex, string sitename, string ip, string username) 
    { 
     //if (ip != "127.0.0.1") // exclude local errors when developing 
     { 
      EILib.ExceptionServices.EIExceptionHandler eh = new EILib.ExceptionServices.EIExceptionHandler(); 
      eh.TestEmail("[email protected]"); 
     } 
    } 
} 

et enfin mon global.asax où tout commence:

protected void Application_Error(object sender, EventArgs e) 
    { 
     //Get the Error.   
     System.Exception anError = Server.GetLastError(); 
     EILib.ErrorHandler.ThrowError(anError, "mydomain.com", EILib.Utilities.GetUserHostAddress(Request), User.Identity.Name); 
     .... 
    } 
+0

Cela donne-t-il une sorte de message d'erreur? Quelque chose dans le journal des événements? Ou est-ce un échec complètement silencieux? – ThatBlairGuy

+0

Pas d'erreurs que je suis capable de trouver. La solution est hébergée chez Rackspace, donc je ne crois pas avoir accès au journal des événements. J'ai activé le suivi sur le service Web. Je peux voir les appels de localhost, mais pas de production, donc il semble que le service web ne soit pas appelé. Tous les chemins semblent corrects et je ne vois rien dans la sortie de trace de mon application Web. – earthling

+0

Si tout le reste échoue, il y a toujours la solution complètement inélégante d'écrire des instructions de débogage dans un fichier texte. – ThatBlairGuy

Répondre

1

Vérifiez que le service SMTP est en cours d'exécution sur votre serveur de production. Vérifiez qu'il est configuré pour autoriser les informations d'identification par défaut (une société d'hébergement peut très bien avoir besoin d'informations d'identification pour le courrier électronique). Vérifiez que le service est configuré pour recevoir le courrier provenant de l'ordinateur local (par opposition à l'utilisation de l'une des méthodes de distribution du répertoire de collecte).

+0

SMTP n'est pas le problème. Je suis capable d'utiliser le formulaire de test et d'envoyer un email avec succès. Je suis également en mesure d'appeler avec succès le service Web à partir de l'application qui s'exécute sur localhost. De plus, le service Web précédent que j'appelais, hébergé sur le même serveur, envoyait également un courriel. – earthling

+0

Ce doit être un problème de configuration. Si le service Web fonctionne indépendamment, c'est quelque chose avec le code qui l'appelle. L'exécutable contenant la référence au service Web a-t-il l'URL correcte dans sa configuration? (Est-ce qu'il pointe toujours vers l'ancien service? – ThatBlairGuy

+0

J'ai supprimé l'ancien service lors de l'ajout du nouveau. J'ai également vérifié qu'il a l'URL correcte. J'ai jeté un coup d'oeil à travers les fichiers dans le dossier Références Web et où jamais je vois une URL, c'est la bonne. – earthling