总结:用Silverlight调用sharepoint2010 webservice 出错
Description:
An error occurred while trying to make a request to URI 'http://localhost/_vti_bin/Lists.asmx'. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. This error may also be caused by using internal types in the web service proxy without using the InternalsVisibleToAttribute attribute. Please see the inner exception for more details.
Solution:
1.首先看看下面这两个Xml文件是否可以在浏览器中正常浏览;
http://localhost/crossdomain.xml
http://localhost/clientaccesspolicy.xml
默认情况下,是找不到这两个文件的,所以才出现了上述的错误。
2.把这两个文件拷到IIS下,这里要注意一下路径:
对于SharePoint网站,路径如下:
C:\inetpub\wwwroot\wss\VirtualDirectories\[your site port] ;
对于Asp.net网站,路径如下:
C:\inetpub\wwwroot
也就是说,把这两个文件放到WebService 所在的路径下。
3.这两个文件内容如下:
可以参考:
Network Security Access Restrictions in Silverlight
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 path="/" include-subpaths="true"/>
</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>
参考文章:
1. http://forums.silverlight.net/forums/p/63112/345740.aspx
2. http://timheuer.com/blog/archive/2008/04/09/silverlight-cannot-access-web-service.aspx
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步