前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WCF 入门(15)

WCF 入门(15)

作者头像
_淡定_
发布2018-08-24 10:54:41
2210
发布2018-08-24 10:54:41
举报
文章被收录于专栏:dotnet & javadotnet & java

前言

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

一个阴霾的周日夜晚。

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

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

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

代码语言:javascript
复制
    public class CalculatorService : ICalculatorService
    {
        public double Divide(int numerator, int denominator)
        {
            return numerator / denominator;
        }
    }

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

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

代码语言:javascript
复制
    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();
    }
QQ截图20151018203545
QQ截图20151018203545

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

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

QQ截图20151018204031
QQ截图20151018204031

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

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

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

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

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

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

代码语言:javascript
复制
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>

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

2. 给 Class加特性,如下。

代码语言:javascript
复制
    [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
    public class CalculatorService : ICalculatorService
    {
        public double Divide(int numerator, int denominator)
        {
            return numerator / denominator;
        }
    }

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

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

QQ截图20151018211316
QQ截图20151018211316

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

Thank you。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-10-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 第15集 WCF里面的异常处理(1)  Exception handling in WCF
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档