2016-10-06 1 views
1

Je suis coincé avec ceci, j'appelle une URL de serveur de rapports simple qui retourne le PDF du rapport, mais étrangement la méthode WebRequest.GetResponse ne renvoie rien, quand je dis cela, je veux dire le code juste arrêter d'exécuter à ce stade, pas d'exception, pas d'erreur, pas de code d'état, pas de visionneuse d'événements sur le serveur, rien !! Et donc je ne suis pas en mesure de le déboguerWebRequest.GetResponse ne renvoie rien

Ceci est mon code

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); 
req.PreAuthenticate = true; 
req.UseDefaultCredentials = true; 
req.Credentials = CredentialCache.DefaultNetworkCredentials; 
req.ImpersonationLevel = TokenImpersonationLevel.Impersonation; 
req.Timeout = int.MaxValue; 

Log.Write("Log before"); 

var response = req.GetResponse(); 

Log.Write("Log after"); 

Il imprime juste Log before journal et rien est imprimé après.

Ce code fonctionne parfaitement lorsque je cours dans Visual Studio et cesse de fonctionner quand il est déployé dans les serveurs de dev et de test! Je m'attends juste à ce qu'il soit au moins à travers l'exception ou le retour non autorisé ou tout autre code d'état, alors je serai capable de déboguer le problème.

Des suggestions que je peux essayer de déboguer?

Répondre

2

Avez-vous essayé de le laisser pendant 24 jours 20 heures 31 minutes et 24 secondes? En d'autres termes, l'avez-vous laissé tant que vous avez réglé le délai d'expiration?

Le serveur ne renvoie pas de réponse et le code attend int.MaxValue millisecondes pour vous le dire. La cause la plus probable de ceci est qu'il existe une infrastructure réseau entre votre client et votre serveur qui interrompt la requête. Cela pourrait être un pare-feu ou un proxy. Il peut également être provoqué par le serveur ne pas aimer la demande et refusant de répondre.

Ce que je voudrais essayer:

  1. Essayez d'accéder à l'URL si un navigateur Web sur la machine que le code échoue sur.
  2. Définissez le délai d'expiration sur une valeur raisonnable, par exemple une minute, et exécutez la demande jusqu'à expiration du délai. Essayez le pinging le serveur distant de l'ordinateur client.
  3. Utilisez un produit tel que Fiddler pour vérifier ce qui est réellement envoyé et reçu. Discutez avec votre fournisseur de réseau pour voir s'il peut vous aider.
  4. Vérifiez les journaux du serveur pour voir si le serveur a erré.
  5. Modifiez le premier journal en Log.Write("Log before: " + url); pour vérifier ce qui est réellement demandé.
+0

Merci @ martin.Actuellement j'ai déjà essayé le point '7' et l'URL est correcte, je n'ai pas posté mon tout mais en fait j'ai essayé d'enregistrer beaucoup d'informations. Point '1' Je vais essayer, cependant j'ai déjà essayé de mettre une simple ancre sur ma page avec le même lien et cela me montre le PDF. Je vais essayer de frapper l'URL directement à partir du serveur dans un certain temps. A propos du point '2', en fait plus tôt je n'ai pas utilisé de chose du tout, mais aussi ça ne fonctionnait pas, j'ai mis ce délai après cela juste pour tester. Point '6', j'ai déjà regardé l'observateur d'événements du serveur avant de poster des quêtes et rien n'y était aussi :( –