首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Silverlight调用WCF时的CommunicationException

从Silverlight调用WCF时的CommunicationException
EN

Stack Overflow用户
提问于 2009-08-21 13:57:45
回答 1查看 5.7K关注 0票数 6

这会偷走我的理智。我已经浏览了几乎所有我在网上找到的东西,没有向前迈出任何一步。无论我在做什么,挫折都不足以描述这个错误的信息。

但是一个接一个。

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

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

我创建了一个新的WCF,命名为Endpoint,并将其绑定到basicHttpBinding。我添加了属性

代码语言:javascript
复制
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]

到Service1类和行

代码语言:javascript
复制
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

到system.serviceModel中的App.config

我保留了其他一切,并通过WCF-client成功地测试了服务。然后我把它发布到本地的IIS7到http://localhost/WCFTest

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

我向客户端添加了以下代码:

代码语言:javascript
复制
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添加了一个clientaccesspolicy.xml和一个crossdomain.xml (C:\inetpub\wwwroot)

clientaccesspolicy.xml:

代码语言:javascript
复制
<?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>

crossdomain.xml:

代码语言:javascript
复制
<?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。两次。经常这样。

我安装了,以获得更多关于问题所在的有意义的信息。但这使得IE崩溃。

我没有主意了。很快就开始攻击我的硬件了。请帮帮我的硬件!

正如约翰所指出的,我确实忘记了这里的全部错误信息:

Fehler beim Senden einer Anforderung 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 dom nenübergreifend auf einen Dienst zugegriffen wurde。M glicherweise müssen Sie sich a 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 das durch Verwendung von werden im Webdienstproxy ohne das InternalsVisibleToAttribute-Attribut verursacht werden。我们在奥斯纳赫姆的书中详细地找到了西。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-08-21 14:14:20

哇,我做到了!

我从webroot中删除了clientaccesspolicy.xml,只留下了crossdomain.xml。多么伟大的奥德赛!谢谢你的倾听,这让我头脑清醒了。我希望有类似问题的人会发现这篇文章有一点帮助!

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1312109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档