WCF配置问题(配置WCF跨域)
其它的先放一边。今天先来分享一下前段时间给公司做网站WCF服务接口的心得。
配置文件的配置问题
这里既然讨论WCF配置文件的问题,那么怎么创建的就不一一讲解了。好多博主都有提过的。所以直接分享自己开发时的收获,这里感谢好多给我启发的人,@好多人....
我这里就拿登录接口来分享下吧。
先贴出代码。
这是服务端代码
因为ASP的兼容性问题,这里的AspNetCompatibilityRequirementsMode用Allowed,(----2018-03-30修改——其实这里需要打开ASP兼容是因为在配置文件里把它给打开了,不配置也是OK的。-----)
(这里说一下,因为前段用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(因为前端是H5,所以只能用http请求,其它按情况而定)
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跨域)的更多相关文章
- 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)
一. 说在前面的话 本节主要在前面章节的基础上补充了几个简单的知识点,比如:第三方调用通过 GlobalHost.ConnectionManager.GetHubContext<MySpecHu ...
- 并发编程概述 委托(delegate) 事件(event) .net core 2.0 event bus 一个简单的基于内存事件总线实现 .net core 基于NPOI 的excel导出类,支持自定义导出哪些字段 基于Ace Admin 的菜单栏实现 第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)
并发编程概述 前言 说实话,在我软件开发的头两年几乎不考虑并发编程,请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天(剩下时间各种浪),根本不会考虑性能问题(能接受范围内).但随着工 ...
- 关于vue-cli3中配置请求跨域的问题
关于vue-cli3中配置请求跨域的问题 根据Vue CLI3官方文档, 需要在vue.config.js文件中配置devServer.proxy选项来解决跨域问题. 关于vue.config.js文 ...
- Flask配置Cors跨域
1 跨域的理解 跨域是指:浏览器A从服务器B获取的静态资源,包括Html.Css.Js,然后在Js中通过Ajax访问C服务器的静态资源或请求.即:浏览器A从B服务器拿的资源,资源中想访问服务器C的资源 ...
- SpringBoot2.x配置Cors跨域
1 跨域的理解 跨域是指:浏览器A从服务器B获取的静态资源,包括Html.Css.Js,然后在Js中通过Ajax访问C服务器的静态资源或请求.即:浏览器A从B服务器拿的资源,资源中想访问服务器C的资源 ...
- Next.js 配置接口跨域代理转发
使用 create-next-app 创建的 Next.js 项目配置接口跨域代理转发需要用到 custom server 功能. 先安装好 express 和 http-proxy-middlewa ...
- Web APi之手动实现JSONP或安装配置Cors跨域(七)
前言 照理来说本节也应该讲Web API原理,目前已经探讨完了比较底层的Web API消息处理管道以及Web Host寄宿管道,接下来应该要触及控制器.Action方法,以及过滤器.模型绑定等等,想想 ...
- tomcat7.0配置CORS(跨域资源共享)
平时我们做前台页面时可能会遇到浏览器以下提示(浏览器控制台): 已阻止跨源请求:同源策略禁止读取位于 http://xxx.xxx.com 的远程资源.(原因:CORS 头缺少 'Access-Con ...
- Web API 实现JSONP或者安装配置Cors跨域
前言 照理来说本节也应该讲Web API原理,目前已经探讨完了比较底层的Web API消息处理管道以及Web Host寄宿管道,接下来应该要触及控制器.Action方法,以及过滤器.模型绑定等等,想想 ...
- springmvc ajax tomcat简单配置实现跨域访问
发现一种改动最小也能实现跨域请求的方法 服务端 服务端修改web.xml配置文件, 增加过滤器 (不用导入任何jar包, 用的tomcat自带jar) <!-- 支持跨域请求 --> &l ...
随机推荐
- [Err] 1136 - Column count doesn't match value count at row 1
1 错误描述 [Err] 1136 - Column count doesn't match value count at row 1 Procedure execution failed 1136 ...
- js、css动态压缩页面代码
1.js.css动态压缩页面代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile=" ...
- Vasya and Basketball CodeForces - 493C
Vasya follows a basketball game and marks the distances from which each team makes a throw. He knows ...
- C# 程序员最常犯的 10 个错误(转)
关于C#关于本文常见错误 #1:把引用当做值来用,或者反过来常见错误 #2:误会未初始化变量的默认值常见错误 #3:使用不恰当或未指定的方法比较字符串常见错误 #4:使用迭代式 (而不是声明式)的语句 ...
- 【BZOJ3730】震波(动态点分治)
[BZOJ3730]震波(动态点分治) 题面 BZOJ 题意 给定一棵树, 每次询问到一个点的距离\(<=K\)的点的权值之和 动态修改权值, 强制在线 题解 正常的\(DP\)??? 很简单呀 ...
- 【BZOJ4403】序列统计(组合数学,卢卡斯定理)
[BZOJ4403]序列统计(组合数学,卢卡斯定理) 题面 Description 给定三个正整数N.L和R,统计长度在1到N之间,元素大小都在L到R之间的单调不降序列的数量.输出答案对10^6+3取 ...
- HDU 3416 Marriage Match IV(最短路,网络流)
题面 Do not sincere non-interference. Like that show, now starvae also take part in a show, but it tak ...
- CEOI2004锯木厂选址
斜率优化 # include <stdio.h> # include <stdlib.h> # include <iostream> # include <s ...
- 与二叉树有关的编程题的Java代码实现
该文章几乎包含了所有与二叉树相关的基础面试题,其中包括二叉树的四种遍历方法:前序遍历,中序遍历,后续遍历,层次遍历. 算法题包括: 二叉树的序列化和反序列化 给定一颗二叉搜索树,请找出其中的第k大的结 ...
- Android RecyclerView 滚动到中间位置
最近看到QQ音乐的歌词每次滑动后都可以滚回到中间位置.觉得甚是神奇,打开开发者模式显示布局,发现歌词部分不是采用 android 控件的写的,应该是前端写的.于是,我想,能不能用 recyclerVi ...