0

我有一个 Silverlight 应用程序,它通过轮询 Duplex 和“正常”异步调用来使用 WCF。一切正常,直到我添加了一个 global.asax 文件。

经过一个小时的谷歌搜索,我发现了Jean-Dirk Stuart的这个相当过时的博客,它建议注释掉存根的 Session_start 事件。

果然解决了这个问题,但它引起了一个担忧。为什么 global.asax 文件的这个看似良性的成员会破坏 wcf 调用。

4

2 回答 2

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. 使用客户端网络堆栈

希望这可以帮助...

克里斯

于 2010-12-11T06:19:26.713 回答
0

有一些类型的绑定支持访问 asp.net 会话数据,除非 WCF 尝试像 http 模块那样挂钩 session_start 事件,否则我真的不明白它会如何影响。您还可以使用反射器来反汇编您获得异常的代码。

于 2010-12-10T20:50:09.390 回答