WCF服务的Web HTTP方式

NET 3.5以后,WCF中提供了WebGet的方式,允许通过url的形式进行Web 服务的访问。现将WCF服务设置步骤记录如下:

  1. endpoint通讯协议设置成  webHttpBinding

  2. endpoint的行为设置成 <webHttp />

  3. 在接口上加入 WebGet 的Attributes

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

复制代码
 <system.serviceModel>
    <services>
      <service name="Services.ShowerService">
         /*提供Web HTTP服务用*/
        <endpoint binding="webHttpBinding" behaviorConfiguration="WebBehavior" contract="Services.IShowerService" />
      </service>
    </services>
    <behaviors>
      <!--WCF中提供了Web HTTP的方式-->
      <endpointBehaviors>
        <behavior name="WebBehavior">
          <webHttp />
        </behavior>
      </endpointBehaviors>
      <!--WCF中提供了Web HTTP的方式-->

      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="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";

 

posted @   以德为先  阅读(4895)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示