2010-12-10 7 views
0

Ich hoffe, Sie können mit diesem helfen :)Wie man serverseitigen Code nach der Seite rendern und senden

Ich muss Dinge tun, nachdem meine Seite im Browser gerendert ist. Im Detail, ich muss E-Mail/SMS und andere nicht browserbezogene Sachen senden, aber die Operation braucht Zeit, und ich möchte nicht, dass meine Besucher 5-8s auf die Erfolgsmeldung warten.

Ich habe versucht, die "After Rendering Code" in der Seite Unload-Ereignis setzen. Das scheint zu funktionieren - aber nur auf localhost. Es funktioniert nicht auf unserem Produktionsserver.

Also ich figgured, vielleicht ist dies einige IIS Einstellung? Ich habe auch gelesen, dass es Sache des Browsers ist, ob es nach Abschluss des Renderings noch zeigen wird - oder bis das ganze Paket beendet ist.

Also habe ich versucht, das Paket mit Response.end vor meinem "A-R-C" zu beenden, aber das hat es gerade getötet.

Haben Sie irgendwelche Erklärungen oder Theorien, wie das geht?

Antwort

0

ThreadPool Threads können Ihnen bei der Implementierung dieser Funktionalität helfen.

+0

Was sind die Nachteile/Vorteile für die Verwendung von ThreadPool über MSMQ? – Anders

+0

Versucht es und es funktionierte innerhalb von 2 Minuten! Danke vielmals! : D – Anders

+0

Gern geschehen! Ich habe noch nie zuvor von MSMQ gehört, daher kann ich Ihnen nichts über Nachteile/Vorteile sagen. Jemand anderes könnte dir dabei viel besser helfen. –

0

Sie könnten sich das asynchrone Entkoppeln der E-Mail/SMS von der Seite vollständig ansehen, z. mithilfe einer MSMQ-Warteschlange. Auf diese Weise werden Sie auch in der Lage sein, die E-Mails/SMS in einer robusteren Art und Weise zu handhaben, z. Wiederholen Sie den Vorgang in 10 Minuten, wenn der SMTP-Server nicht aktiv ist oder das SMS-Gateway besetzt ist.

Bearbeiten: Re: MSMQ vs Thread/Threadpool - Mit einem neuen Arbeitsthread sollte in den meisten Fällen auch gut funktionieren, jedoch für High-End-Skalierbarkeit können Sie MSMQ oder ähnliches betrachten.

Haben Sie einen Blick auf diese SO here

Thread schreiben (oder Thread) - Schneller und einfacher zu implementieren - Unsent SMS/der Nachrichten verloren gehen, wenn die App Pool recycelt wird - für Gewinde konkurrieren (mit einem benutzerdefinierten Thread) empfehlen

MSMQ - Mehr Arbeit benötigt - müssen einen neuen Listener-Prozess (zB verwenden WCF) erstellen verarbeiten Nachrichten - kann schwierig sein, zu hosten, wenn Sie die Kontrolle über den Server haben - Can sei transaktional und persistent - d. h. nicht gesendete Nachrichten gehen nicht verloren, selbst wenn Ihr App Pool recycelt wird oder der Server neu gestartet wird. - Kann mehr Kontrolle über den Durchsatz ausüben - Reduzierung und verzögerte Lieferung - z.B. Senden Sie eine SMS, wenn es günstiger ist

+0

Ah, vielen Dank für die zusätzliche Information nonnb. Ich glaube Threadpool ist der Weg, der für mich geht, aber Ihre Antwort könnte für andere hilfreich sein :) – Anders

0

Sie können einen neuen Thread erstellen und Ihre Methode für diesen Thread aufrufen.

Verwandte Themen