2
|
Sandor Drieënhuizen · 技术社区 · 14 年前 |
1
3
我设法解决了。 通过检查sharparch.wcf源代码,我发现在发送wcf服务响应之前,它总是关闭所有nhibernate会话。这本身就是一件好事。 另外,我发现我的客户端代理工厂在每个web请求中只触发一次,而第二个服务调用应该会产生一个新的代理实例。结果是,第二个服务调用将失败,因为底层的nhibernate会话已经关闭。我用 Castle.Core.过渡属性 ,这将生命周期管理留给创建客户机的工厂。其结果是每次请求代理时都会调用代理工厂。 其次,我必须这样注册代理(在 组件注册器 班级):
这个 WCF会话设施 根据客户机的状态管理其关闭/中止。这可以确保每当客户机代理被破坏时,客户机通道都是关闭的,因此我们不需要将调用放入try catch块中。 像我一样,您可能会考虑在添加组件而不是使用属性时配置生存期管理,但显然没有合适的 AddComponentWithExtendedProperties 这就允许了。 |
2
1
我对sharparchitecture不太熟悉,但似乎您至少有两个选择:
|
Ehsan Akbar · 当请求被激发时,WCF请求时间会增加 6 年前 |
Gans · 具有多操作合约的WCF Rest服务 6 年前 |
Moelgaard · NLog中的IIS应用程序名称。配置 6 年前 |
Kerwen · WCF服务调用异步函数 6 年前 |