博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
项目中基于Rest的Wcf服务发布以及iBatisNet框架的使用(上)
阅读量:6929 次
发布时间:2019-06-27

本文共 2991 字,大约阅读时间需要 9 分钟。

在工作中学习到两个知识点,如标题所示,在此记录一下,方便日后使用。

首先贴上项目结构截图:

首先说基于Rest的Wcf服务发布,主要记录如何在web.config中进行配置。在项目中添加Wcf服务文件(.svc文件),添加成功后把IWcfService.cs删去(当然也可以不删,根据个人使用习惯),然后把WcfService.svc.cs中的代码稍作修改,改完后的代码:

using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace MyProject.Web.Web.WcfService {
[ServiceContract] public class WcfService {
[OperationContract] public void DoWork() {
} } }

然后,去看添加完.svc文件后的web.config文件,发现增加了system.serviceModel节点,wcf服务的配置都是在此节点中进行的。

我们要实现基于Rest的Wcf服务,需要在system.serviceModel节点中进行配置,配置完全后的代码如下:具体各节点的作用可网上搜索相关技术文档

其中注释部分为特别需要注意的地方,实现服务的类的名称一定要命名空间名+类名。配置好后,我们还要在WcfService.svc.cs中进行相应改动,改动完后的代码:

using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using System.ServiceModel.Activation; using System.ServiceModel.Web; namespace MyProject.Web.Web.WcfService {
[ServiceContract] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]//如果不加此属性,将出现兼容性错误 [JavascriptCallbackBehavior(UrlParameterName = "personCallBack")]//jsonp跨域定义的类名 public class WcfService {
[WebGet(ResponseFormat = WebMessageFormat.Json)] public string DoWork() {
return "wcf test is successful"; } } }

与改动前的代码相比,有几个地方的改动:首先,在[ServiceContract]下边增加了[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)],这是保证运行兼容性的,如果不加将出现兼容性错误。同时,命名空间需对应增加

using System.ServiceModel.Activation;其次,增加了[JavascriptCallbackBehavior(UrlParameterName = "personCallBack")],这个属性的作用是用来jsonp跨域访问的,

personCallBack为jsonp跨域定义的类名(原则上可以随便取),前台ajax调用时jsonp属性对应的值应该跟此类名相同。要增加此属性需在项目中 添加引用->在.Net选项中找到System.ServiceModel.Web的组件,然后using System.ServiceModel.Web;最后的改动,是把   [OperationContract]替换成了[WebGet(ResponseFormat = WebMessageFormat.Json)],这是因为基于rest的wcf增加了WebGet和WebInvoke两个属性,具体作用可以查阅相关文档。WebInvoke的配置:

 [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)],注意Method = "POST",

post必须为大写,不然可能会出错。

至此,基于rest的wcf服务已经基本配置完毕,在前台写ajax调用代码:

发现服务并没有好用,但是把项目发布到IIS上,会发现服务是好用的,能按预期的弹出"wcf test is successful",本地调用服务不其作用,发布到IIS上就起作用了,这是为什么呢?原因还是出在web.config文件的配置上,在 <system.web>节点下要增加<authentication mode="Forms"></authentication>节点(有人说这个节点应该是系统自动生成的,但是我发现我的web.config中并没有自动生成此节点,难道是我的操作不当?),这个节点是asp.net身份验证用的,具体作用查询官网文档.增加这个节点后,我们发现本地服务也能调用了。至此全部配置完毕。

下篇博文记录iBatisNet框架的配置使用

 

 

 

 

转载于:https://www.cnblogs.com/arthur20101108/archive/2012/02/01/2334787.html

你可能感兴趣的文章
苹果新的编程语言 Swift 语言进阶(七)--枚举、结构、类
查看>>
常用Mysql存储引擎--InnoDB和MyISAM简单总结
查看>>
Spring Security笔记:登录尝试次数限制
查看>>
Atitit. 提升软件开发效率and 开发质量---java 实现dsl 4gl 的本质and 精髓 O725
查看>>
SQLMap用户手册【超详细】
查看>>
HDOJ 4884 & BestCoder#2 1002
查看>>
Validate Binary Search Tree leetcode java
查看>>
【编程题目】在二元树中找出和为某一值的所有路径(树)
查看>>
脱裤子放屁,多此一举
查看>>
445port入侵具体解释
查看>>
Git学习笔记(二)
查看>>
美妙的 CSS3 动画!一组梦幻般的按钮效果
查看>>
微软历史最高市值是多少?
查看>>
Linux Shell脚本Ldd命令原理及使用方法
查看>>
[ucgui] 对话框8——Framewin小工具
查看>>
Ununtu 12.04 gedit安装插件Source Code Browser
查看>>
Docker学习总结之Docker与Vagrant之间的特点比较
查看>>
人类智商一般在多少左右?爱因斯坦的智商是多少?
查看>>
Sql语句-case when then else end
查看>>
main函数中argc理解
查看>>