我有一个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);
答案 0 :(得分:2)
来自http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontextscope.aspx:
创建OperationContextScope时,当前的OperationContext 存储,新的OperationContext成为由。返回的 目前的财产。当处理OperationContextScope时, 原始的OperationContext已恢复。
显然,它们必须按照它们创建的相反顺序进行处理。
scope.Dispose();