使用CORS通过IIS访问WCF REST服务在本地工作,但不能从连接的设备工作

时间:2015-10-15 19:05:40

标签: c# wcf iis cors

我有一组我已启用WebInvoke的WCF服务。 我希望访问它们的一种方法是通过IIS托管的简单网页上的javascript。 为了使这一点工作,我必须启用CORS,我使用本指南管理: http://blogs.microsoft.co.il/idof/2011/07/02/cross-origin-resource-sharing-cors-and-wcf/

但是,当我从另一台计算机访问本地网络的网页时仍然存在问题。

举个例子:

网络Comp1(10.0.0.1)和Comp2(10.0.0.2)上的两台计算机。 IIS和WCF服务都由Comp1托管。

使用Firefox我可以使用以下方法访问Comp1的网页: http:// 10.0.0.1:12345

只要根据上面的链接启用CORS,这就可以正常工作。如果我禁用CORS,我会收到一条错误消息,提示CORS已被禁用。

如果我使用Comp2中的Firefox访问10.0.0.1:12345,无论是否在WCF服务器中启用了CORS代码,都会收到相同的CORS错误消息。如果CORS被禁用,我在这里得到的错误消息与我在Comp1上获得的错误消息相同。

有没有人对可能出错的地方有任何建议?

使用Visual Studio 2013,所有内容(js和html除外)都在C#中。 请告诉我是否应该包含一些代码以获得更好的帮助。

1 个答案:

答案 0 :(得分:1)

确保在IIS中为CORS支持启用了自定义标头。如果没有将以下设置添加到web.config的根目录

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <system.webServer>
   <httpProtocol>
     <customHeaders>
       <add name="Access-Control-Allow-Origin" value="*" />
     </customHeaders>
   </httpProtocol>
 </system.webServer>
</configuration>

有关在server sideclient side上启用角色的详细信息。

P.S。 - 您还可以签出this新的WCF休息行为扩展库,该库支持启用CORS的行为。