0

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

它在我的 PC 上运行良好,并且仅在服务器(托管服务提供商)上的计算机上运行良好。我注意到对于安装了 Silverlight 开发人员版的所有机器,我的 Silverlight 应用程序工作正常,但是对于安装了 Silverlight 通用版的所有机器,我的应用程序在调用 WCF 服务时失败,并显示以下消息: 附加信息:[MessageXmlProtocolError] 参数:调试资源字符串不可用。通常,关键和论点提供了足够的信息来诊断...

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

4

2 回答 2

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 客户端的请求和响应,以查看是否可以跟踪问题。

于 2011-11-28T03:14:24.323 回答
0

我刚刚添加了一些更改 wcf 服务 url 的代码,以确保它在正确的服务器上运行。这解决了问题

于 2012-03-12T06:35:00.470 回答