wcf - 从 Silverlight 调用 WCF 时发生 CommunicationException

标签 wcf silverlight

这会偷走我的理智。我几乎浏览了我在网上找到的所有内容,但没有向前迈出一步。无论我在做什么,挫败感都不足以描述这个错误消息弹出。

但一个接一个。

我有一台带有 VS 2008 SP1 德语版 Si​​lverlight Tools 3.0 的 64 位 W2008 服务器机器

我想使用 Silverlight 应用程序中的 WCF 服务。而且,和许多人一样,我在调用结束时得到了这个非常令人沮丧的非描述性通信异常。

我创建了一个新的 WCF 服务,命名为 Endpoint,并将其绑定(bind)设置为 basicHttpBinding。我添加了属性

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

到 Service1 类和行
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

到 App.config 中的 system.serviceModel

我将其他所有内容保持原样,并通过 WCF 客户端成功测试了该服务。然后我将它发布到我本地的 IIS7 到 http://localhost/WCFTest

在我的 Silverlight 应用程序中,我使用 http://europa.therestofmydomain/WCFTest/WcfTest.Service1.svc 将服务添加到 Servicereference

我将以下代码添加到客户端:
using OSMDeepEarthExample.ServiceReference1;

...
Service1Client s1 = new Service1Client();
s1.GetDataCompleted += new System.EventHandler<GetDataCompletedEventArgs>(s1_GetDataCompleted);
s1.GetDataAsync(20);

void s1_GetDataCompleted(object sender, GetDataCompletedEventArgs e)
{
  CountFetchedData.Text = e.Result;
}

我向 webroot (C:\inetpub\wwwroot) 添加了一个 clientaccesspolicy.xml 和一个 crossdomain.xml

客户端访问策略.xml:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from>
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

跨域.xml:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  <allow-access-from domain="*" />
  <allow-http-request-headers-from domain="*" headers="SOAPAction" />
</cross-domain-policy>

我重新启动了 IIS。两次。经常。

我安装了 Web Development Helper 可能是为了获得更多关于什么是错的有意义的信息。但这会使 IE 崩溃。

我没主意了。很快就开始对我的硬件发起攻击。请帮助我的硬件!

正如约翰所说,我确实忘记了它的完整错误消息:

Fehler beim Senden einer Anforderung an den URI "http://europa.therestofmydomain/WCFTest/WcfTest.Service1.svc". Ursache ist möglicherweise, dass ohne die entsprechende domänenübergreifende Richtlinie oder mit einer nicht für SOAP-Dienste geeigneten Richtlinie domänenübergreifend auf einen Dienst zugegriffen wurde. Möglicherweise müssen Sie sich an den Besitzer des Diensts wenden, damit eine domänenübergreifende Richtliniendatei veröffentlicht und das Senden von sich auf SOAP beziehenden HTTP-Headern zugelassen wird. Dieser Fehler kann auch durch Verwendung von internen Typen im Webdienstproxy ohne das InternalsVisibleToAttribute-Attribut verursacht werden. Weitere Details finden Sie in der inneren Ausnahme.



简而言之,它说可能缺少域间规则。

最佳答案

哇,我做到了!

我从 webroot 中删除了 clientaccesspolicy.xml,只留下了 crossdomain.xml。什么奥德赛!谢谢你的收听,它帮助我理清思路。我希望有类似问题的人会发现本文对您有所帮助!

关于wcf - 从 Silverlight 调用 WCF 时发生 CommunicationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1312109/

相关文章:

c# - 无法使用 https 端点创建 wcf web 服务

c# - ServiceController.Start() 未达到 "Running"状态

c# - inetsvr 的 appcmd 在发出后发出错误

silverlight - 按需加载 xap 文件

c# - Silverlight javascript 调用

asp.net - 如何在负载平衡环境中设置 SSL?

c# - 如何将 IIS 上的 WCF (svc) 服务配置为仅处理 HTTPS 请求?

linux - 浏览器外的月光4

javascript - IIS直播流畅流: How to hide control bar?

silverlight - 是否应该将 Silverlight 控件重新加载到页面上?