求助:wcf服务跨网段访问
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助:wcf服务跨网段访问相关的知识,希望对你有一定的参考价值。
wcf默认是寻找机器名!改成ip也不行!服务器ip:10.53.108.12 ,108网段访问wcf正常(可能同网段可以寻找到机器名) ,其他网段如10.53.170.xx 都不能访问,在ie里面输入地址可以看到 也能下载代理类 就是在程序里面访问不了!
求助 wcf新手 找了好久解决不了!
配置信息如下
服务端
<system.serviceModel>
<wsDualHttpBinging>
<binding name="my">
<security mode="none">
</>
</wsDualHttpBinging>
<services>
<service name="Visits.Service1">
<host>
<baseAddresses>
<add baseAddress="http://10.53.108.12/Service1/"/>
</baseAddresses>
</host>
<endpoint address="" binding="wsDualHttpBinding" contract="Visits.IService1">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
</behaviors>
客户端
<security mode="none">
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsDualHttpBinding>
</bindings>
<client>
<endpoint address="http://10.53.108.12/Visits.Service1.svc"
binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_IService1"
contract="ServiceReference1.IService1" name="WSDualHttpBinding_IService1">
跨网段访问不是代码的设置,需要添加默认IP地址,在服务器端的IP地址中点添加,然后输入10.53.170.*(*表示随便,只要不与其他冲突就好),170的网段就能访问服务器了。
岂不要占用一个ip 占用一个ip资源,ip资源有限啊!
追答你用路由器主机也会占用一个路由资源的吧。这是肯定要占的啊,不然彼此怎么通讯
来自网站客户端脚本的 WCF RESTful 服务跨域访问
【中文标题】来自网站客户端脚本的 WCF RESTful 服务跨域访问【英文标题】:WCF RESTful Service Cross Domain Access from Web Site Client Side Scripts 【发布时间】:2012-04-23 18:52:55 【问题描述】:我正在使用 VS 2010 IDE 开发 WCF RESTful 服务,在研究期间,我们被告知 API 将部署在站点托管的同一域中,例如。
API 托管: www.site.com/API/services.svc(API 是一个虚拟文件夹)
网站托管: www.site.com
由于我们的网站将使用我们计划在同一域中部署的客户端 ajax 使用相同的 API,因此不会出现跨域/源访问问题。
但是,稍后会发生变化,iPad、iPhone 和智能电视应用程序将使用相同的 API,因为我们计划将 API 部署在名为 www 的单独域中的 API 会有巨大的流量。 api.com/services.svc 它对所有设备应用程序的响应都很好,但是我们在网站上遇到了问题,因为它是来自客户端的跨域访问。经过搜索,我发现代码可以在 API 中破坏此跨域策略,如下所示,通过在 Global.asax 文件 Application_BeginRequest() 中实现以下代码,它在 Chrome、Firefox 和 Safari 浏览器中响应良好,但在 IE 中没有响应
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "x-requested-with");
if (HttpContext.Current.Request.HttpMethod.ToUpper() == "OPTIONS")
HttpContext.Current.Response.AddHeader("X-DR-Request-Terminated-By", "CrossDomainXhr-OPTIONS");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
请帮我解决这个问题...
提前谢谢...
萨蒂什
【问题讨论】:
【参考方案1】:据我所知,IE 不允许在
中使用“*”HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
尝试指定域。您也可以参考这里:Access-Control-Origin in IE
【讨论】:
非常感谢您的回答,它非常有帮助,请指导我如何允许多个域的 Access-Control-Allow-Origin,我尝试使用 (,) 分隔域,但它不工作以上是关于求助:wcf服务跨网段访问的主要内容,如果未能解决你的问题,请参考以下文章
实验:在不同网段中搭建DHCP服务和跨网段的DNSweb服务
如何配置www服务器,只允许192.168.8.*网段的用户访问?