我有WCF服务,服务方法将byte []数组返回给silverlight客户端。 在某些时候,我会在某些时候获得异常,否则它会正常工作。远程服务器返回错误:NotFound。 可能的原因是什么?
<binding name="plugWeb" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="128" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="4096" />
</binding>
我现在改变了<readerQuotas maxDepth="64" >to <readerQuotas maxDepth="128">
工作正常。
可以吗?
配置文件中的<readerQuota />
是什么?
答案 0 :(得分:0)
通常,当服务器产生异常,向服务构造函数添加try-catch块以及调用的服务方法并查看所获得的内容时,也会报告此情况。
另一个原因可能是更改了方法签名等,您忘记更新服务参考。
但正如Terry所说,是否有一个代码示例可供您分享,或者至少是重现的步骤或者您最后一次工作后所做的更改?
答案 1 :(得分:0)
对于silverlight来说这是一个非常常见的错误,首先,错误是一个泛型错误,Silverlight应用程序显示任何服务端错误。 现在解决方案,尝试找出此错误的根本原因。 有很多方法可以做到这一点。 以下是我用于我的: 1)将下面的代码添加到wcf服务的配置文件
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "D:\Sumit.svclog"/>
</listeners>
</source>
</sources>
这将生成一个.svc,分析这个文件它会为你提供很多信息。
2)U可以使用外部工具来分析wcf服务调用,例如fiddler。在这种情况下,还尝试分析服务调用