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跟踪文件,您可以使用服务跟踪查看器工具打开该文件,该工具将为您提供有关该调用和错误消息的详细信息.
我最近有这个问题.
事实证明,分析由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)
| 归档时间: |
|
| 查看次数: |
7472 次 |
| 最近记录: |