12
votes

Réponse.flush () lance system.web.httpException

J'ai un httphandler que j'utilise pour gérer certaines images sur le site Web du client. Lorsque je émise le flux d'images sur l'objet de réponse et que vous appelez occasionnellement, une erreur est lancée. Voici un codeblock xxx

de ce que j'ai lu, cette exception est causée par une déconnexion cliente avant la fin du processus et qu'il n'y a rien à affleurer.

Voici une sortie de ma page d'erreur xxx

context.response.flush tombe à la ligne 75.

y a-t-il un façon de vérifier cela avant de passer la chasse sans l'envelopper dans un bloc d'essai / prise.


0 commentaires

4 Réponses :


11
votes

Personnellement dans votre implémentation depuis la ligne suivante est la réponse.end (), supprimez simplement l'appel à la réponse.flush () comme réponse.end () prend soin de tout pour vous.


0 commentaires

7
votes

pendant que je suis d'accord avec Mitchel - Il y a peu de besoin Pour appeler Flush comme vous êtes sur le point d'appeler fin, si vous utilisez cela ailleurs, vous pouvez essayer d'appeler réponse.isClientConnnue premier.

Obtient une valeur indiquant si le client est toujours connecté au serveur.


3 commentaires

Alors, pourrais-je envelopper mon .flush () et .end () dans un .isclientconnected et avoir ce problème, pensez-vous? Les clients du client ne reçoivent pas l'erreur sur leurs écrans, je viens d'obtenir des courriels d'Elmah à chaque fois. Juste une contrariété mineure plus que tout.


Vous pouvez certainement envelopper le .flush dans le chèque - pas trop sûr de ne pas avoir de répercussions de ne pas appeler .end ... Je suppose qu'il y a un processus de course à pied là-bas qui provoque des gens de se déconnecter avant d'avoir fini de générer l'image?


Je peux confirmer que l'emballage de rincer à l'intérieur d'un .isClientConnected peut jeter la même exception; est arrivé à moi maintenant. Coller avec .end ()



0
votes

Je me rends compte que c'est un ancien poste mais il est venu quand je cherchais une réponse à un problème similaire. Ce qui suit est en grande partie verbatim de Cela répond donc . Plus d'informations de fond est disponible sur est une réponse.end () considéré comme nocif? .

Remplacez ceci: httpcontext .Current.response.end ();

avec ceci: xxx


0 commentaires

0
votes

pour les futurs lecteurs ..

J'ai couru dans ce cas où la réponse.end () jette une erreur car le client est déconnecté. P>

Une erreur s'est produite lors de la communication avec l'hôte distant. L'erreur Le code est 0x80070057 P> blockQuote>

Curthly Un CRLF dans la statutDescription a entraîné la fermeture de la connexion. p> xxx pré>

ne peut insérer la valeur null dans la colonne '', la table ''; La colonne ne permet pas aux nuls. Insertion échoue. \ r \ n strong> La déclaration a été terminé p> blockQuote>

le supprimer corrigé mon problème. P>

Response.StatusDescription = ex.Message.Replace("\r\n", " ");


0 commentaires