8
votes

Comment fermer les connexions sous-jacentes après avoir pris le temps httpwebrequest

Mon application ASP.NET Envoi de httpwebrequest au serveur de repos à distance et à attendre la réponse, et j'ai trouvé qu'il y a beaucoup de même message d'erreur comme celui-ci:

System.net.WebException: l'opération a expiré. à System.net.httpwebrequest.geterresponse ()

Est-ce que cela est possible qu'après que j'ai attrapé cette exception et fermez directement la connexion HTTP sous-jacente? Ou je n'ai pas vraiment à le faire depuis que j'ai déjà défini Keepalive to False?

Merci.

En réalité, une autre question est si l'exception du délai d'attente est toujours arrivée au système . NET.HTTPWEBREQUEST.GETRESPONSONSE (), Est-ce que cette moyenne d'application attend la réponse du serveur distant et ne pouvait pas obtenir de réponse avant de sortir. Quelle pourrait être la raison éventuelle, la connexion réseau non stable? Serveur distant non réponse? Toutes les autres raisons possibles?

Voici le code: xxx


2 commentaires

Avez-vous compris la solution? Je me suis battu le même problème. Je n'ai plus d'idées.


@Alekseybykov vous avez dit que la réponse marquée ne résout pas votre problème? Alternatives?


4 Réponses :


2
votes

La règle simple est que si elle n'appelle pas Idisposal, elle n'a pas besoin de disposer de.


3 commentaires

N'étais pas implémenté Idisposal, mais j'ai trouvé qu'il existe de nombreuses connexions dans la condition de près_wait, je ne sais pas ce qui s'est passé, inquiet de si mon code ne manipulait pas correctement les connexions sous-jacentes.


Je pense que vous devez faire confiance aux concepteurs-cadres sur celui-ci. Découvrez stackoverflow.com/questions/716436/... Pour plus d'informations.


Même si en général, il est vrai que cela ne résout pas ce problème



0
votes

Assurez-vous de disposer aussi bien que de proximité.

ou utilisez en utilisant les blocs au lieu de essayer-enfin : xxx


0 commentaires

0
votes

Une autre chose que vous pouvez faire est d'appeler la méthode d'abandon () sur un httpwebrequest qui a entraîné une erreur, comme: xxx


0 commentaires

1
votes

Aussi, vous pouvez également augmenter le nombre de connexions sortantes dans la machine.Config:

<system.net>
  <connectionManagement>
     <add address="*" maxconnection="2" />
  </connectionManagement>
</system.net>


0 commentaires