【问题标题】:wcf OperationContextScope disposewcf OperationContextScope 处置
【发布时间】:2012-03-18 12:34:01
【问题描述】:

我有一个使用 OperationContextScope scope = new OperationContextScope(i.InnerChannel); 调用 wcf 服务的 c# 应用程序;

我需要让连接保持打开状态,因此我无法使用 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);

【问题讨论】:

    标签: c# wcf silverlight


    【解决方案1】:

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

    当一个 OperationContextScope 创建时,当前的 OperationContext 被存储并且新的 OperationContext 成为由 当前财产。当 OperationContextScope 被释放时, 恢复原来的 OperationContext。

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

    scope.Dispose();
    

    【讨论】:

    • 您好,我不能使用“Using 语句”我需要知道如何在不使用“Using”的情况下进行处理
    • 当我调用 Scope.Dispose() 时,我收到一条错误消息,指出它已乱序处理:/
    • ?你调用 Dispose()... 你还需要知道什么?
    • 当我调用 .Dispose() 时,.net 会抛出“Dispose is out of order”的异常,无论这意味着什么。我会继续玩 dispose
    • 请展示一些重现问题的简单测试代码。
    猜你喜欢
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2012-10-22
    • 2014-02-13
    • 2011-07-01
    • 2020-10-02
    相关资源
    最近更新 更多