【问题标题】:Silverlight Enabled WCF Services | Hosted in Website Type Project | .Net 4.0 | Crossdomain IssueSilverlight 启用 WCF 服务 |托管在网站类型项目 | .Net 4.0 |跨域问题
【发布时间】:2012-01-20 10:57:54
【问题描述】:

我需要一些关于 WCF 服务的帮助。情况是这样的,我在 .net 4.0 中创建了一个网站项目,然后我添加了一个名为 AdminService.svc 的启用 Silverlight 的 WCF 服务。我在这个服务中写了几个方法,当然,做成了[OperationContracts]。然后我在同一个工作区创建了另一个 Silverlight 5.0 项目并尝试使用该服务(AdminService.svc),在这个项目中添加了它的引用(我们必须记住,AdminService 正在同一个工作区的另一个网站类型项目中运行) .但是现在每次我运行应用程序并尝试调用一个简单地返回一些数据的方法时,我都会收到这个错误!

尝试向 URI 发出请求时出错

'http://localhost:2850/XYZServices/AdminService.svc'。这可能是 由于试图以跨域方式访问服务而没有 适当的跨域策略,或不合适的策略 用于 SOAP 服务。您可能需要联系服务的所有者以 发布跨域策略文件并确保它允许 要发送的与 SOAP 相关的 HTTP 标头。这个错误也可能是由 在 Web 服务代理中使用内部类型而不使用 InternalsVisibleToAttribute 属性。请查看内部异常 了解更多详情。

这个问题的明显答案是添加一个crossdomain.xml和clientaccesspolicy.xml,对吧?我将它们都放在我的 wcf 网站类型项目的根级别,内容如下,

clientaccesspolicy.xml

<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource include-subpaths="true" path="/"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

还有一个

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-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

请帮我解决这个问题,现在越来越麻烦了。

【问题讨论】:

  • 请参阅错误消息中的“这可能是”。它并没有说这是肯定的错误。很可能,这是完全不同的东西,实际上要归功于无效的 Web 服务定义。显示您的服务的代码和配置。另外,如果您在浏览器中手动输入服务 URL,它会显示什么?
  • 在这里查看我的回答stackoverflow.com/questions/8687492/…,也许它会对你有所帮助。
  • 这就是答案! stackoverflow.com/a/3901660/614889 我需要将 Web 服务项目的 Web 根目录更改为“/”,它在开发服务器上对我有用。这意味着,在 Visual Studio 中,由于还没有 Web 根目录,因此将根设置为“/”是关键。谢谢。

标签: .net silverlight wcf web project


【解决方案1】:

我注意到 clientaccesspolicy.xml 文件中的一个错误可能会导致此消息。

将网页(博客、MSDN)的文件内容复制到 Visual Studio 时,有时您会得到错误的引号字符或隐藏/不可见的 unicode 字符。

将 xml 文件的内容复制到记事本并将其粘贴回 Visual Studio 多次为我解决了这个问题。

您也可以在 Visual Studio 中使用Silverlight Client Access Policy File Extension(工具 | 扩展管理器)

【讨论】:

  • 感谢 Erno 的回复,我在问题的 cmets 中发布了上面的答案,我首先尝试重新检查我的策略文件,他们找到了。还是谢谢!
猜你喜欢
  • 2012-08-24
  • 2010-11-24
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 2012-06-16
  • 2011-05-03
  • 2013-10-06
相关资源
最近更新 更多