我的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文件。
的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="https://*" secure="true" />
<allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
clientaccesspolicy.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在调用服务后显示的内容。
使用fiddler设置解码https IE没有显示任何额外的条目,但使用chrome我得到以下输出
答案 0 :(得分:1)
正如错误消息所示,“由于尝试以跨域方式访问服务,此可能 ...”尝试使用某些工具,例如Fiddler客户端看看服务器的实际响应是什么。这将为您提供有关该问题的更多信息。
答案 1 :(得分:0)
如fiddler所示,您的服务参考文件具有指向localhost的指针:444这通常发生在您将两个项目放在同一解决方案中并添加服务引用时。
答案 2 :(得分:0)
我通过右键单击解决方案的frontEnd.Web部分,转到属性然后转到Web选项卡而不是使用自动分配端口选项解决了这个问题,我将其更改为使用本地IIS服务器。这摆脱了错误。