0

我的 silverlight 应用程序当前托管在 IIS 中,并且设置为仅使用 HTTPS。

silverlight web 项目是 IIS 网站的根,webservices 项目是映射到 /Services 的单独 web 应用程序。

我可以使用“”和“”导航到我的网站

但如果我使用第二个选项,网站加载正常,但在尝试访问我的任何服务时出现错误。

尝试向 URI“ https://localhost/Services/Services/Authentication.svc ”发出请求时出错。这可能是由于在没有适当的跨域策略或不适合 SOAP 服务的策略的情况下尝试以跨域方式访问服务。您可能需要联系服务的所有者以发布跨域策略文件并确保它允许发送与 SOAP 相关的 HTTP 标头。此错误也可能是由于在 Web 服务代理中使用内部类型而没有使用 InternalsVisibleToAttribute 属性

我的 Web 服务应用程序的根目录中以及 Silverlight Web 项目的根目录中都有 Crossdomain.xml 和 clientaccesspolicy.xml 文件。

跨域.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="https://*" secure="true" />
  <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

客户端访问策略.xml

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

我不确定问题是什么。

谢谢

编辑

以下是 fiddler 调用服务后显示的内容。.

提琴手输出 将提琴手设置为解码 https IE 没有显示任何额外的条目,但使用 chrome 我得到以下输出

提琴手输出2

4

3 回答 3

1

正如错误消息所说,“这可能是由于尝试以跨域方式访问服务......”尝试在客户端中使用诸如Fiddler之类的工具来查看服务器的实际响应是什么。这将为您提供有关该问题的更多信息。

于 2011-07-04T14:45:34.600 回答
0

我通过右键单击解决方案的 frontEnd.Web 部分解决了这个问题,转到属性,然后是 Web 选项卡,而不是使用自动分配端口选项,我将其更改为使用本地 IIS 服务器。这摆脱了错误。

于 2012-05-08T12:02:42.207 回答
0

如 fiddler 所示,您的服务参考文件具有指向 localhost:444 的指针,这通常发生在您在同一解决方案中拥有两个项目并添加服务参考时。

于 2011-07-06T03:36:26.447 回答