wcf OperationContextScope dispose

时间:2012-02-29 00:46:28

标签: c# wcf silverlight

我有一个c#app,使用OperationContextScope scope = new OperationContextScope(i.InnerChannel)调用wcf服务;

我需要保持连接处于打开状态,因此我无法使用Using语句处理OperationContextScope。但是,在查看内存分析器时,我看到了数百个OperationContextScope。我需要处理范围,但是当我调用.Dispose()时,我得到一个错误,说它不按顺序。我不知道为什么我不能处理范围。

有谁知道如何正确处理OperationContextScope?以下是我的代码的一部分。

                BasicHttpBinding wsbinding = null;                  
                 OperationContextScope scope  = null;

                    wsbinding = new BasicHttpBinding(BasicHttpSecurityMode.None);
                    wsbinding.MaxBufferSize = 2147483647;
                    wsbinding.MaxReceivedMessageSize = 2147483647;
                    wsbinding.Name = "BasicHttpBinding_Iretail";



                i = new IretailClient(wsbinding, new EndpointAddress(commonStuff.EndpointAddress));

                scope = new OperationContextScope(i.InnerChannel);

1 个答案:

答案 0 :(得分:2)

来自http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontextscope.aspx

  

创建OperationContextScope时,当前的OperationContext   存储,新的OperationContext成为由。返回的   目前的财产。当处理OperationContextScope时,   原始的OperationContext已恢复。

显然,它们必须按照它们创建的相反顺序进行处理。

scope.Dispose();