2010-12-10 47 views
0

我有一個Silverlight應用程序,它通過輪詢雙工和「普通」異步調用來使用WCF。一切工作正常,直到我添加了一個global.asax文件。如何新添加的global.asax文件弄亂了我的WCF服務

經過一個小時的谷歌搜索,我碰到了這個相當過時的博客Jean-Dirk Stuart,他建議註釋掉Session_start事件。

果然,糾正了這個問題,但它引起了關注。爲什麼這個global.asax文件的良好成員會打破wcf調用。

回答

2

是的,這是一個鮮爲人知但令人討厭的問題。一旦將global.asax文件添加到Web項目中,問題就出現在會話狀態被啓用的情況下。一旦啓用會話狀態,服務器將僅依次執行呼叫。這裏有一些更深入的信息兩篇文章:

http://blogs.msdn.com/b/silverlightws/archive/2009/09/30/having-a-pollingduplex-service-and-any-other-wcf-service-in-the-same-website-causes-silverlight-calls-to-be-slow.aspx

http://weblogs.asp.net/olakarlsson/archive/2010/05/20/simultaneously-calling-multiple-methods-on-a-wcf-service-from-silverlight.aspx

此行爲僅使用瀏覽器時,網絡堆棧,發生這樣你的選擇是:

  1. 禁用會話在您的web項目的狀態,或
  2. 使用客戶端網絡堆棧

希望這有助於...

克里斯

+0

非常有趣。我不需要會話狀態,但我需要後臺線程來監視事件隊列並通過雙工將消息發送到SL客戶端。我曾預期會使用Global.asax application_start事件來完成此操作。也許有更好的辦法? – 2010-12-11 12:37:19

0

有一些支持訪問asp.net會話數據的綁定類型,我真的不知道它會如何影響,除非WCF嘗試像http模塊一樣掛入session_start事件。你也可以使用反射器來反彙編你得到異常的地方的代碼。

+0

這一點,我想......如果你添加的Global.asax和/或設置你的WCF服務,asp.net兼容模式,WCF調用觸發session_start(etc) – Kir 2012-01-10 15:46:59

相關問題