从Silverlight调用WCF时的CommunicationException

Aag*_*nor 6 silverlight wcf

这会偷走我的理智.我已经浏览了几乎我在网上找到的所有内容,并没有向前迈进一步.无论我在做什么,挫折都不足以描述这种错误消息.

但一个接一个.

我有一台配备VS 2008 SP1德语版本的Silverlight Tools 3.0的64位W2008服务器机器

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

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

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
Run Code Online (Sandbox Code Playgroud)

到Service1类和行

<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
Run Code Online (Sandbox Code Playgroud)

到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;
}
Run Code Online (Sandbox Code Playgroud)

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

clientaccesspolicy.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>
Run Code Online (Sandbox Code Playgroud)

crossdomain.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>
Run Code Online (Sandbox Code Playgroud)

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

我安装了Web Development Helper,可能会获得有关WHAT错误的更有意义的信息.但这会让IE崩溃.

我没有想法.很快就开始对我的硬件采取激进措施了.请帮我的硬件!

正如约翰所指出的那样,我确实忘记了完整的错误消息:

Fehler beim Senden einer Anforderung an den URI" http://europa.therestofmydomain/WCFTest/WcfTest.Service1.svc ".Ursacheistmöglicherweise,dass ohne dieentsprechendedomänenübergreifendeRichtlinieoder mit einernichtfürFabs-Dienste geeignetenRichtliniedomänenübergreifendaufeinen Dienst zugegriffen wurde.MöglicherweisemüssenSiesich an den Besitzer des Diensts wenden,damiteinedomänenübergreifendeRichtliniendateiveröffentlichtunddas 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详细信息查看了In inrenren Ausnahme.

简而言之,它表示可能缺少一个域间规则.

Aag*_*nor 7

哇,我做到了!

我从webroot中删除了clientaccesspolicy.xml,只留下了crossdomain.xml.太棒了!谢谢你的倾听,这有助于我清醒.我希望有类似问题的人会发现这篇文章有点帮助!