wcf寄宿在iis上的跨域访问问题【不止是添加跨域文件】
2013-11-13 11:14
351 查看
源:http://www.cnblogs.com/lensso/archive/2011/04/26/2029360.html
当客户端为silverlight或者其它不默认支持跨域的技术时,需要为wcf手动开启跨域,详细方法如下:
首先跨域文件是必须的
ClientAccessPolicy.xml
CrossDomain.xml
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
以上两个跨域文件需放在部署在iis上的根目录下。
服务端config配置如下:
以上服务器配置需要注意的地方为:
1.behavior中的<serviceMetadata httpGetEnabled="true" />是必须的;
2.binding中的安全级别设为none,如:<security mode="None"></security>;
3.每个服务添加一个元数据的终结点配置,如:<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>;
完成以上配置以后silverlight等客户端即可以实现跨域访问wcf服务了。
----------------------------------------------
今天用这种办法试了(在版本控制器外厕所),但是怎么都不行,把版本控制器中的两个一样的xml文件和web.config 文件复制过来,直接ok,感觉莫名其妙。
不知道哪里的问题,有朋友了解情况,望留言。
当客户端为silverlight或者其它不默认支持跨域的技术时,需要为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 path="/" include-subpaths="true"/> </grant-to> </policy> </cross-domain-access> </access-policy>
CrossDomain.xml
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*"/>
</cross-domain-policy>
以上两个跨域文件需放在部署在iis上的根目录下。
服务端config配置如下:
<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="LoggerBehavior"> <serviceDebug includeExceptionDetailInFaults="true" /> <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> <extensions> </extensions> <bindings> <basicHttpBinding> <binding name="UnSecureConversationBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="1048576" maxBufferPoolSize="2097152" maxReceivedMessageSize="1048576" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true"> <readerQuotas maxDepth="32" maxStringContentLength="16777216" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> <security mode="None"></security> </binding> </basicHttpBinding> </bindings> <services> <service behaviorConfiguration="LoggerBehavior" name="eTank.OIU.Service.OIUService" > <endpoint binding="basicHttpBinding" bindingConfiguration="UnSecureConversationBinding" contract="eTank.OIU.Contract.IOIUUC" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> <service behaviorConfiguration="LoggerBehavior" name="eTank.OIU.Service.SMSConfigService" > <endpoint binding="basicHttpBinding" bindingConfiguration="UnSecureConversationBinding" contract="eTank.OIU.Contract.ISMSConfigUC" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> </system.serviceModel>
以上服务器配置需要注意的地方为:
1.behavior中的<serviceMetadata httpGetEnabled="true" />是必须的;
2.binding中的安全级别设为none,如:<security mode="None"></security>;
3.每个服务添加一个元数据的终结点配置,如:<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>;
完成以上配置以后silverlight等客户端即可以实现跨域访问wcf服务了。
----------------------------------------------
今天用这种办法试了(在版本控制器外厕所),但是怎么都不行,把版本控制器中的两个一样的xml文件和web.config 文件复制过来,直接ok,感觉莫名其妙。
不知道哪里的问题,有朋友了解情况,望留言。
相关文章推荐
- 解决IIS中部署WCF时,访问.svc文件的404错误问题
- 解决IIS中部署WCF时,访问.svc文件的404错误问题
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- 解决 Silverlight 调用 WCF 服务 跨域访问 和 Silverlight 引用服务后配置文件不加载的问题
- IIS虚拟目录内的视频文件访问出错:HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
- wcf实现跨域访问所需的配置文件
- Orchestration通过向导发布为WCF服务寄宿在IIS中,出现账户权限问题的解决
- 【转载】如何给IIS添加能访问的文件类型
- WCF服务以控制台程序为宿主时的跨域访问问题(附源码)
- Silverlight访问Window服务为宿主的WCF跨域问题解决方案.
- WCF服务IIS7.5寄宿时遇到的问题
- jQuery 跨域请求问题和xml文件中带有命名空间的元素的访问
- WCF HTTP 错误 404.3 - Not Found(由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。)
- IIS访问.json/.txt文件总是提示 “无法找到该页” IIS添加MIME扩展类型及常用的MIME类型列表
- 跨域访问WCF问题
- WCF HTTP 错误 404.3 - Not Found(由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。)
- Windows7下面exe寄宿WCF:Http无法注册URL{0} ,进程不具有此命名空间的访问权限问题
- WCF 自托管、无配置文件实现jsonp(跨域)的访问
- IIS中部署WCF访问网络盘问题