我有一个网站,其中包含一个小型Silverlight插件,该插件调用一个非常简单的WCF服务来保存Session中的值。
它在我的电脑上工作正常,只能在我的服务器上的计算机上工作(托管服务提供商)。我注意到,对于安装了Silverlight Developer Edition的所有计算机,我的Silverlight应用程序运行正常,但是对于安装了Silverlight通用版的所有计算机,我的应用程序在使用以下消息调用WCF服务时失败: 其他信息:[MessageXmlProtocolError] 参数: 调试资源字符串不可用。通常,关键和参数提供了足够的信息来诊断......
我有crossdomain.xml和clientaccesspolicy.xml文件,这些文件应该是正确的,我使用的是basicHttpBinding而没有安全性。此外,开发人员版本也没有问题。有人可以帮忙吗? (Silverlight版本= 4)
答案 0 :(得分:0)
问题是收到的响应不是WCF服务所期望的。从MSDN文档中,MessageXmlProtocolError是:
“从网络收到的XML出现问题。有关更多详细信息,请参阅内部异常。”
这意味着您需要查看内部异常是什么,以确定实际原因。
如果WCF服务托管在特定URL上的IIS中,则可能是发件人无权访问该网站中的该URL。我们不止一次遇到过这个问题。
帮助解决问题的方法包括:
1)在有问题的计算机上安装SDK,看看是否可以获得完整的例外。
2)通过在web.config中添加如下所示的块来使用WCF跟踪(假设WCF服务托管在IIS中):
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\log\WebTrace.svclog" />
</listeners>
</source>
</sources>
</system.diagnostics>
3)使用类似fiddler的工具跟踪来自WCF客户端的请求和响应,以查看是否可以追踪问题。
答案 1 :(得分:0)
我刚添加了一些更改wcf服务URL的代码,以确保它在正确的服务器上运行。这解决了问题