WCF方法调用两次

Sau*_*ani 15 wcf web-services system.net.webexception

我有一个Web服务,它将数据返回到桌面应用程序.我遇到的问题是,当Web服务返回少量数据时,一切正常,但是当数据量很大时,它会抛出以下异常:

System.Net.WebException:基础连接已关闭:接收时发生意外错误.

当我调试Web服务时,我看到这个特殊的方法被调用了两次.它在第一次没有任何反应时执行return语句,但是当它第二次执行它时,桌面应用程序中会抛出上述异常.

我在stackoverflow之前发现了类似的帖子,但他们没有解决我的问题.有人可以告诉我这里发生了什么吗?

谢谢!

Dar*_*rov 12

可能是因为邮件的大小大于默认邮件大小.您可以尝试在端点配置中增加此值.你也可以看一下这篇文章.


更新:

为了进一步诊断问题,我建议您通过在配置文件中添加以下内容来激活服务上的跟踪:

<system.diagnostics>
    <trace autoflush="true">
    </trace>
    <sources>
        <source name="System.ServiceModel"
                switchValue="Information, ActivityTracing"
                propagateActivity="true">
            <listeners>
                <add name="sdt"
                     type="System.Diagnostics.XmlWriterTraceListener"
                     initializeData="WcfDetailTrace.e2e" />
            </listeners>
        </source>
    </sources>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)

这将生成WcfDetailTrace.e2e跟踪文件,您可以使用服务跟踪查看器工具打开该文件,该工具将为您提供有关该调用和错误消息的详细信息.


Bat*_*gar 6

我最近有这个问题.

事实证明,分析由System.Diagnostics.XmlWriterTraceListener编写的WCF日志会产生我设置的数据协定的问题.

我回来了Dictionary<int, object>(旁注:是的,我知道这真的很糟糕!,但我很年轻,需要钱).我忘了在DataContract的返回值中包含[KnownType]属性:

    [DataContract]
    [KnownType(typeof(Dictionary<int, double>))]
    [KnownType(typeof(Dictionary<int, ChannelData>))]
    [KnownType(typeof(Dictionary<string, Dictionary<int, double>>))]
    public class MyCoolObject: ICoolObject
    {
[DataMember]
        public Dictionary<string, object> Results
        {
            get { return _results; }
            set { _results = value; }
        }
    }
Run Code Online (Sandbox Code Playgroud)


phi*_*wei 5

我也有这个问题.对我来说,它发生了,因为我有一个[DataMember]属性,get{}但没有set{}.添加set{}此行为后停止.