首页 > 代码库 > WCF配置问题(配置WCF跨域)
WCF配置问题(配置WCF跨域)
其它的先放一边。今天先来分享一下前段时间给公司做网站WCF服务接口的心得。
配置文件的配置问题
这里既然讨论WCF配置文件的问题,那么怎么创建的就不一一讲解了。好多博主都有提过的。所以直接分享自己开发时的收获,这里感谢好多给我启发的人,@好多人....
我这里就拿登录接口来分享下吧。
先贴出代码。
这是服务端代码
因为ASP的兼容性问题,这里的AspNetCompatibilityRequirementsMode用Allowed
(这里说一下,因为前段用Ajax调的接口,所以用了callback)
namespace WCFService.Services { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Login”。 // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 Login.svc 或 Login.svc.cs,然后开始调试。 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [JavascriptCallbackBehavior(UrlParameterName = "jsoncallback")] public class Get_Login : ILogin { /// <summary> /// 登录 /// </summary> /// <param name="id"></param> /// <param name="pwd"></param> /// <returns></returns> string ILogin.Login(string id, string pwd) { return BLL.LoginBLL.Instance.Login(id, pwd); } } }
这是契约代码
namespace WCFService.IBLL { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“ILogin”。 [ServiceContract] public interface ILogin { [OperationContract] [WebInvoke( Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/Login?id={id}&pwd={pwd}")] string Login(string id, string pwd); } }
服务契约这里使用的是Get方法
先配置服务的ABC
A. address为空就行
B. binding这里我们绑定为webhttpbinding(因为这是涉及到跨域问题)
C. contract绑定的服务契约(当然啦,这里绑定的就是我们上面的ILogin)
ABC配置完成后基本的WCF服务已经是可以使用了的。但是我们这里讲解的它的跨域问题,WCF最主要的还是配置问题。这个是关键。接下来我们说说这个跨域问题。
配置跨域
如需跨域的话要配置下面几点(仅供参考)
服务配置也贴出来吧
<!--登录--> <service name="Dar.WCFService.Services.Get_Login"> <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" bindingConfiguration="HttpJsonBinding" contract="Dar.WCFService.IBLL.ILogin" /> </service>
这里说一下跨域除了配置ABC外还要加bindingConfiguration属性,binding配置为webHttpBinding,以下是为bindingConfiguration配置允许跨域
<!--指定脚本可以跨域--> <bindings> <webHttpBinding> <binding name="HttpJsonBinding" crossDomainScriptAccessEnabled="true"/> </webHttpBinding> </bindings>
接下来配置服务行为
<behaviors> <endpointBehaviors> <behavior name="web"> <!-- 配置指定允许web脚本访问--> <webHttp/> <!--<enableWebScript />--> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior name=""> <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> <serviceDebug includeExceptionDetailInFaults="false"/> </behavior> </serviceBehaviors> </behaviors>
这里顺带说一下。
aspNetCompatibilityEnabled和multipleSiteBindingsEnabled都要设置为true
有点累了,睡个午觉。就先讲那么多,萌新一个。对WCF只是了解了些基础。哪里不对的望各位大神指点(勿喷!)。有什么我们多多交流。
WCF配置问题(配置WCF跨域)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。