MessageXmlProtocolError参数:调试资源字符串不可用。通常,关键和论据足以提供

时间:2011-11-28 03:04:08

标签: asp.net silverlight wcf silverlight-4.0 basichttpbinding

我有一个网站,其中包含一个小型Silverlight插件,该插件调用一个非常简单的WCF服务来保存Session中的值。

它在我的电脑上工作正常,只能在我的服务器上的计算机上工作(托管服务提供商)。我注意到,对于安装了Silverlight Developer Edition的所有计算机,我的Silverlight应用程序运行正常,但是对于安装了Silverlight通用版的所有计算机,我的应用程序在使用以下消息调用WCF服务时失败: 其他信息:[MessageXmlProtocolError] 参数: 调试资源字符串不可用。通常,关键和参数提供了足够的信息来诊断......

我有crossdomain.xml和clientaccesspolicy.xml文件,这些文件应该是正确的,我使用的是basicHttpBinding而没有安全性。此外,开发人员版本也没有问题。有人可以帮忙吗? (Silverlight版本= 4)

2 个答案:

答案 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的代码,以确保它在正确的服务器上运行。这解决了问题