2010-03-15 77 views
0

我有一个silverlight应用程序,它在开发过程中一直使用http与自我托管的WCF服务进行通信。我现在通过https保护服务。我得到一个错误,我不得不回到在项目的开始:clientaccesspolicy.xml没有通过HTTPS请求

试图做出URI“https://localhost:8303/service”的请求时发生错误。这可能是由于尝试以跨域方式访问服务而没有适当的跨域策略或者不适合SOAP服务的策略。您可能需要联系服务的所有者以发布跨域策略文件,并确保它允许发送与SOAP相关的HTTP头。使用Web服务代理中的内部类型而不使用InternalsVisibleToAttribute属性也可能导致此错误。有关更多详细信息,请参阅内部例外。

我的clientaccesspolicy.xml文件设置为允许从http:// *和https:// *进行访问。唯一的区别是使用http vs https。在我切换到https之前,我可以看到(通过Fiddler)clientaccesspolicy.xml文件被请求,但现在我不能。我现在看到的是两个电话CONNECT localhost:8303 HTTP/1.0 ...它似乎是击中服务器根目录,但没有请求clientaccess文件。有任何想法吗?

回答

1

您使用的是自签名证书吗?如果是这样,你是否在浏览器中添加了服务器域(看起来你的服务位于本地主机上,并且出现错误消息)作为证书异常?

这可能不是你的问题,但我想通过SSL访问WCF服务使用自签名的证书时,域没有被明确添加为浏览器设置异常之前已经得到了安全异常。如果您通过HTTP访问您的应用程序,但通过HTTPS访问您的应用程序,则浏览器从不会提示您添加该例外。

这里有几个博客帖子可能是一些帮助让SSL在Silverlight中工作,如果这不是你的问题:

http://kevindockx.blogspot.com/2009/12/getting-silverlight-to-work-over-ssl.html

http://timheuer.com/blog/archive/2008/10/14/calling-secure-services-with-silverlight-2-ssl-https.aspx

+0

我有两个问题。你给的第一个链接固定其中一个(另一个在我的答案中)。我正在使用dev服务器,因此指向localhost而不是机器名称。我将项目设置更改为发布到IIS并在发布时使用计算机名称。谢谢! – Philip 2010-03-16 17:19:45

+0

是的,我正在使用自签名证书。 – Philip 2010-03-16 17:21:50

1

除了丹·奥克莱尔的链接,另一项是Fiddler。 Fiddler被设置为解密HTTPS流量,并破坏了通信。我禁用了解密HTTPS流量,并且(除了丹的建议)它工作。