2010-12-10 39 views
0

我希望你們可以幫助這個:)如何運行服務器端代碼後頁面呈現和發送

我需要做我的網頁後,在瀏覽器中呈現的東西。詳細地說,我需要發送電子郵件/短信和其他非瀏覽器相關的東西,但操作需要時間,我不希望我的訪客等待5-8s的成功消息。

我曾嘗試在頁面卸載事件中放置「After Rendering Code」後。這似乎工作 - 但只在本地主機。它不適用於我們的生產服務器。

所以我figgured,也許這是一些IIS設置?我也讀過,它是由瀏覽器決定的,如果它在渲染完成後顯示epage - 或者等待整個程序包結束。

所以我試圖在我的「A-R-C」之前用Response.end結束包裝,但那只是殺了它。

難道你們有怎麼這個任何解釋或theorys?

回答

0

ThreadPool線程可以幫助你實現這個功能。

+0

使用ThreadPool比MSMQ更糟糕的是/優點是什麼? – Anders 2010-12-10 09:16:21

+0

試過了,它在2分鐘內就可以工作!非常感謝! :D – Anders 2010-12-10 09:23:49

+0

不客氣!我從來沒有聽說過MSMQ,所以我不能告訴你任何有關劣勢/優勢的事情。其他人可能會更好地幫助你。 – 2010-12-10 09:35:45

0

你可能看異步解耦從頁面電子郵件/ SMSing完全,例如通過使用MSMQ隊列。通過這種方式,你也能夠以更強大的方式處理電子郵件/短信,例如,如果SMTP服務器關閉或SMS網關繁忙,則在10分鐘內重試。

編輯:回覆:MSMQ VS線程/線程池 - 使用新的工作線程也應該工作在大多數情況下正常,但是,對於高端的可擴展性,可以考慮MSMQ或相似。

看一看這個SO張貼here

線程池(或線程) - 更快,更容易實現 - 未發送短信的/如果應用程序池被回收, 消息將丟失 - 將爭奪線程(推薦使用自定義線程池)

MSMQ - 需要更多的工作 - 將需要創建一個新的偵聽器進程(例如,使用WCF)來處理消息 - 可能難以承載,除非你有在服務器 控制 - 燦是事務性的持久性 - 即使您的應用程序池被回收或服務器重新啓動,未發送的消息也不會丟失。 - 可以更好地控制吞吐量 - 節流和延遲交付 - 例如短時間內發送短信時,它更便宜

+0

啊,謝謝你的額外信息nonnb。我相信Threadpool是我要走的路,但你的回答可能對其他人有所幫助:) – Anders 2010-12-13 09:21:54

0

您可以創建一個新的線程並在該線程上調用您的方法。

相關問題