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