【发布时间】: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