2009-03-09 5 views
0

Nous avons eu un problème avec un composant de publipostage que j'ai écrit depuis longtemps et la nature exacte de la difficulté, comment le mesurer et comment l'atténuer ont tous resté insaisissable.SMTP à travers ASP.Net 2 Taille de la session Problème

Il est arrivé à un point où ces problèmes deviennent critiques et j'ai besoin de réponses claires alors j'espère que quelqu'un ici pourra les fournir.

Fondamentalement, ce widget de publipostage envoie seulement environ 25 000 courriels, un courriel à la fois, à une liste de diffusion. Ceci est notre message préféré, car cela signifie que chaque destinataire reçoit un message qui lui est adressé personnellement, donc nous sommes satisfaits de cette boucle. Ce que nous ne sommes pas satisfaits, c'est que si vous laissez le programme à traiter après environ 6k emails, nous obtenons une erreur que la "taille de session maximale" a été atteinte et il ne va pas envoyer plus de mails. Nous n'avons aucun moyen de savoir à l'heure actuelle à quel courrier il correspond, notre seule méthode d'étranglement est basée sur des devinettes et consiste à envoyer 1k emails toutes les 90 secondes en appuyant sur un bouton. J'ai cherché jusqu'à ce que ma tête est mal pour une indication de la façon de suivre les courriels quand ils sortent, comment mesurer la taille de la session ou quelque chose pour permettre au processus d'être un seul bouton et pour que le widget être auto-régulé mais personne ne semble vouloir en parler en ligne.

J'ai eu quelques suggestions à des requêtes connexes qui suggèrent de retravailler complètement le widget ou même d'écrire une application de publipostage sur mesure. En fin de compte, tout ce que nous voulons faire est d'étrangler le courrier sortant afin qu'il ne provoque pas d'erreur, ou, si cela est inévitable, de compter les mails envoyés et de nous donner une idée de l'endroit où aller chercher, ou même gérer gracieusement l'erreur. Quelque chose. N'importe quoi.

Quelqu'un a-t-il des suggestions concrètes pour suivre les emails générés par .Net 2.0 à partir du serveur d'origine?

Répondre

1

Pourquoi la session est-elle en croissance? Faites-vous cela dans la vie d'une demande?

Je suppose que vous êtes "suivi" en gardant des informations sur les e-mails envoyés dans l'état de la session. J'écrirais un tracker qui peut écrire par lot des informations de suivi sur le stockage extérieur, tels que des fichiers xml sur disque ou une base de données SQL. Si la partie de suivi n'est pas ce qui cause des problèmes, mais que l'e-mail individuel (ou le widget qui les envoie) est, vous pouvez essayer de regrouper les e-mails et les BCC au lieu de les envoyer à un temps. Les copies carbone aveugles sont toujours adressées personnellement et ne révèlent pas au destinataire qu'il a été envoyé en masse. Il vous suffit de déterminer la limite du nombre d'e-mails que vous pouvez envoyer via BCC. Troisième option: dans votre application Web, supprimez ce dont vous avez besoin pour générer ces e-mails dans un emplacement de stockage commun et disposez d'une application Windows Service (ou d'une application de tâche planifiée) qui vérifie régulièrement les nouveaux e-mails et les traite en dehors de votre application Web ... peut-être même en dehors du serveur hôte de votre application Web. Bien sûr, ce genre de chose ne fonctionnerait pas sur les serveurs d'hébergement partagés ...

+0

En ce qui concerne la session, je ne fais que rapporter ce que dit le message d'erreur retourné. Bien que vous m'avez donné une pensée intéressante. La troisième option semble être un goer. –

+0

Probablement une application simple qui s'exécute comme une tâche planifiée est votre meilleur pari. – Will

0

Nous faisons à peu près la même chose, mais nous envoyons 500 emails à la fois par minute. Les 500 premiers sont envoyés, puis la page se recharge et le travail continue avec les 500 prochains.Cela prend un peu de journalisation et de stockage des informations sur la file d'attente actuelle de 500, permettant des délais d'attente, rechargements précoces, etc, mais il a fonctionné (emailing probablement 10 000 ou des courriels sur une nuit donnée) pour un couple des années.

Questions connexes