.NET 3.5以后,WCF中提供了WebGet的方式,允许通过url的形式进行Web 服务的访问。在以前的代码中,写过多次类似的例子,但总是忘记如何配置,现在将设置步骤记录如下:

  1. endpoint通讯协议设置成  webHttpBinding
  2. endpoint的行为设置成 <webHttp />
  3. 在接口上加入 WebGet 的Attributes

示例代码如下: web.config文件的配置

  <system.serviceModel>
<services>
<service name="Services.ShowerService">
<endpoint binding="webHttpBinding" behaviorConfiguration="WebBehavior" contract="Services.IShowerService" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="WebBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

WCF接口的设置,这里加入了对URI模板(UriTemplate)和JSON(WebMessageFormat.Json)的支持:

namespace Services
{
[ServiceContract]
public interface ShowerService
{
[OperationContract]
[WebGet(UriTemplate="/Hello/{name}", RequestFormat=WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json)]
string Hello(string name);
}
}

测试:打开IE浏览器,在地址栏输入:http://localhost:3000/Services/ShowerService.svc/hello/abc,将会看到访问后的结果。   调试:将Web.config中的 <webHttp /> 修改为 <webHttp helpEnabled="true" />将可以在浏览器页面中列举出可用接口,并提供提交的数据样例。打开IE浏览器,在地址栏输入:http://localhost:3000/Services/ShowerService.svc/help 即可。 Siverlight 访问:使用SL的WebClient访问WebInvoke方法时,不要忘记将 HttpRequestHeader.ContentType 设置成 application/json,代码如下所示:

            WebClient client = new WebClient();
client.Headers[HttpRequestHeader.ContentType] = "application/json";

public interface IPortalService {

/// <summary>
///
/// </summary>
/// <param name="value"></param>
/// <returns></returns>
[OperationContract]
[WebGet(UriTemplate = "/Hello?name={name}&sex={sex}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
  string Hello ( string name, string sex );
}

http://localhost:8082/PortalService.svc/Hello?name=Alex&sex=%E5%A5%B3

WCF 的 WebGet 方式的更多相关文章

  1. wcf通过webHttpBinding方式发布rest web服务

    <system.serviceModel> <services> <service name="ServiceUpdater.ServiceUpdate&quo ...

  2. wcf,socket,数据传输方式

    WCF的最终目标是通过进程或不同的系统.通过本地网络或是通过Internet收发客户和服务之间的消息. WCF合并了Web服务..net Remoting.消息队列和Enterprise Servic ...

  3. WCF多种调用方式兼容

    1.能被ajax get 2.能post 3.wcf正常调用 实现: [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompati ...

  4. WCF两种方式

    http://www.ilanever.com/article/sitedetail.html?id=164 1. 显示添加服务行为,为服务自动提供基于HTTP-GET的元数据.2. 采用元数据交换终 ...

  5. 以WCF安全认证方式调用通用权限管理系统获取基础信息资料

    在B/S开发中,涉及到获取系统基础资料的问题,因为是在不同平台下的开发,采用了WCF方式获取. 下面是一个调用通用权限管理系统(吉日嘎拉)基础信息资料的一个demo供参考 调用原理图: web.con ...

  6. VS2008调用VS2012的WCF服务的方式和遇到的问题

    1 用添加服务引用的懒方式 2 用http请求方式 3 客户端自己定义一个Contract,跟服务端的一样(可以只写要使用的方法,不用全部写完). 由于规范要求,前两种都不能用,后面根据同事的描述,产 ...

  7. WCF服务调用方式

    WCF服务调用通过两种常用的方式:一种是借助代码生成工具SvcUtil.exe或者添加服务引用的方式,一种是通过ChannelFactory直接创建服务代理对象进行服务调用.

  8. 调用WCF服务的几种方式

    首先发布了一个名为PersonService的WCF服务.服务契约如下: [ServiceContract]     public interface IPersonService     {     ...

  9. (转)WCF开发框架形成之旅---WCF的几种寄宿方式

    WCF寄宿方式是一种非常灵活的操作,可以在IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便.高效提供服务调用.本文分别对这几种方式进行详 ...

随机推荐

  1. go语言基础之不要操作没有合法指向的内存

    1.不要操作没有合法指向的内存 示例: package main //必须有个main包 import "fmt" func main() { //没有指向内存 var p *in ...

  2. 超级简单的jquery操作表格(添加/删除行、添加/删除列)

    利用jquery给指定的table添加一行.删除一行 <script language="javascript" src="./jquery.js"> ...

  3. 主成分分析(PCA)

    相对与网上很多人分享的有关PCA的经历,我第一次接触PCA却不是从人脸表情识别开始的,但我所在的实验室方向之一是人脸的研究,最后也会回到这个方向上来吧. PCA(principal component ...

  4. 微信公众号开发之如何使用JSSDK

    微信开发交流群:148540125 欢迎留言.转发.打赏 系列文章参考地址 极速开发微信公众号 项目源码参考地址 点我点我--欢迎Start 查看公众号是否有使用JSSDK的权限 服务号.订阅号可以通 ...

  5. ECharts演习(一)

    前几天小组讨论,窗外的麻雀在电线杆上多嘴,想想很有夏天的感觉,手中的铅笔在纸上来了又回,我用几行字形容孰是孰非......... Echarts使用指南 百度网站:http://echarts.bai ...

  6. Discuz常见小问题-无法登陆UCenter怎么办

    打开uc_server/model/admin.php找到第22行的$this->cookie_status = 0;改成$this->cookie_status = isset($_CO ...

  7. LoadRunner录制:集合点

    背景 LoadRunner 执行过程中,有的user 跑的快,有的跑的慢.就导致user1可能还在执行 登录操作呢,user2都已经开始执行查询操作了. 但是在进行负载测试时 ,我们又需要让很多用户同 ...

  8. android google map v1 v2 v3 参考

    V1,V2已经不被推荐使用,谷歌强烈推荐使用V3. 本人在选择时着实纠结了良久,现在总结如下: 对于V1,现在已经申请不到API KEY了,所以不要使用这个版本.这个是网址:https://devel ...

  9. itext Protecting your PDF

    /* * This class is part of the book "iText in Action - 2nd Edition" * written by Bruno Low ...

  10. 解决m2e插件maven-dependency-plugin问题

    http://blog.csdn.net/smst1987/article/details/6871495 问题:maven-dependency-plugin (goals "copy-d ...