码迷,mamicode.com
首页 > 其他好文 > 详细

WCF 入门(15)

时间:2015-10-18 22:42:35      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

前言

度过了一个阳光明媚的周末。

一个阴霾的周日夜晚。

第15集 WCF里面的异常处理(1)  Exception handling in WCF

大致看了一下,这个WCF视频里面总共有6集,这个是第一集,对WCF的异常做一个大致的入门介绍。

① 新建一个Demo, 命名为CalculatorService,里面只要一个OperationContract, Divide,如下。

    public class CalculatorService : ICalculatorService
    {
        public double Divide(int numerator, int denominator)
        {
            return numerator / denominator;
        }
    }

这里,我们默认不做任何异常处理,直接把他host起来。

② 新建一个aspx的Client来测试这个Service。代码也很简单,外加不加任何异常处理。

    protected void btnCalc_Click(object sender, EventArgs e)
    {
        var client = new CalculatorServiceClient();
        lbMsg.Text = client.Divide(
            int.Parse(tbNumerator.Text.Trim()),
            int.Parse(tbDenominator.Text.Trim())
            ).ToString();
    }

技术分享

分别在两个textbox里面输入被除数和除数,点计算按钮,右边显示结果。

③ 下面来测试一下如果除数为0,得到如下结果。

技术分享

貌似然并软,因为Error Message上看不到任何和除0有关的异常信息。客户端不晓得自己哪里错了。

这个是WCF的默认设置,出于系统安全性的考虑,服务端默认不会把Error Message 序列化为xml内容传给客户端,而是报了一个Common的WCF Fault Error。

因为如果客户端轻易的就知道了服务器上的internal error message,要hack就相对容易了一些。

但是出于调试的,我们有时候需要这个详细的错误信息内容。

④ 有两种方法可以让客户端知道具体的错误内容。

1. 修改配置文件 (推荐这种,因为改配置文件不需要重新编译Source Code)

      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>

如上,在ServiceDebug节点中增加includeExceptionDetailInFaults, 赋值为true。

2. 给 Class加特性,如下。

    [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
    public class CalculatorService : ICalculatorService
    {
        public double Divide(int numerator, int denominator)
        {
            return numerator / denominator;
        }
    }

我们给CalculatorService加了ServiceBehavior特性,并且给IncludeExceptionDetailInFaults 属性赋值 true。

⑤ 重新run Host, 再测试一次。

技术分享

这下就能看到除0错误了。

Thank you。

WCF 入门(15)

标签:

原文地址:http://www.cnblogs.com/sheldon-lou/p/4890322.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!