ddc
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
广州网站建设 上海网站设计 网站建设 上海网站建设 网站建设 广州网站设计 虚拟主机 域名注册 虚拟主机 广州网站建设 虚拟主机 域名注册 ACG动漫家园 ACG大玩家 上海网站建设 品牌设计 网站建设
网站建设
网站建设
品牌设计
中国设计秀
中国设计秀企业频道
时代网
中资源
当前位置:网络学院首页 >> 编程开发 >> .net >> 构建安全的Xml Web Service系列二

构建安全的Xml Web Service系列二 (2)

来源:中国设计秀    作者:    点击:47     加入收藏    发表评论
0
顶一下
    //创建一个用于在WebMethod上使用的SoapExtension属性
    [AttributeUsage(AttributeTargets.Method)]
    public class TraceExtensionAttribute : SoapExtensionAttribute
    {
        private string filename = "c:\\log.txt";
        private int priority;
        /// <summary>
        /// 扩展类型
        /// </summary>
        public override Type ExtensionType
        {
            get { return typeof(TraceExtension); }
        }
        /// <summary>
        /// 优先级
        /// </summary>
        public override int Priority
        {
            get { return priority; }
            set { priority = value; }
        }
        /// <summary>
        /// 用于记录该WebMethod的SoapMessage的文件的绝对路径
        /// 默认为c:\\log.txt;
        /// </summary>
        public string Filename
        {
            get
            {
                return filename;
            }
            set
            {
                filename = value;
            }
        }
    }  
}

  结下来,介绍一个如何使用该类:

  如果要使让TraceExtension支持第一种记录方式,需要作的额外工作为:

  只需要在要记录SoapMessage的WebMethod添加如下的Attribute

  [TraceExtension(Filename="d:\\data.xml",Priority=0)]

  当然路径,您可以自己设定

  前一节的WebMethod就变成了

添加了针对WebMethod日志记录的WebMethod
public MySoapHeader header = new MySoapHeader();       
        [WebMethod]
        [SoapHeader("header")]  
        [TraceExtension(Filename="d:\\data.xml",Priority=0)]
        public string HelloWorld()
        {
            if (header == null)
            {
                return "您没有设置SoapHeader,不能正常访问此服务!";
            }
            if (header.UserName != "jillzhang" || header.Pwd != "123456")
            {
                return "您提供的身份验证信息有误,不能正常访问此服务!";
            }
            return "Hello World";
        }
 
  调用下该WebService,便在d盘产生一个data.xml文件,里面的内容为:

-----Soap请求 在 2007年05月25日 09时06分29秒
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Header><MySoapHeader xmlns="http://tempuri.org/"><UserName>jillzhang</UserName><Pwd>123456</Pwd></MySoapHeader></soap:Header><soap:Body><HelloWorld xmlns="http://tempuri.org/" /></soap:Body></soap:Envelope>
 
 
 
-----Soap响应 在 2007年05月25日 09时06分29秒
<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><HelloWorldResponse xmlns="http://tempuri.org/"><HelloWorldResult>Hello World</HelloWorldResult></HelloWorldResponse></soap:Body></soap:Envelope>

  如何采用第二种方法,让WebService的每个WebMethod都能记录日志

  需要在Web.config中作如下的设定

  首先添加如下节点

<webServices>
        <soapExtensionTypes>
          <add type="Jillzhang.TraceExtension,Jillzhang" priority="1"  group="High"  />
        </soapExtensionTypes>
      </webServices>

  然后通过配置设定日志文件保留的路径:

<appSettings>
    <add key="logRoot" value="d:"/>
  </appSettings>

  找到日志文件,里面也赫然有着SoapMessage的真面目。通过以上方法,大家可以清晰地分析到SoapMessage的具体格式和内容,知道了这个以后,对付Web Service,您就可以随心应手,随心所欲,如果你愿意,你甚至也可以“强奸"一次webservice,哈哈!

[1] [2]
2007-06-28 16:06:00    出处:
Google
热点文章/相关文章

音乐
嫁衣 画心 放生 天亮了 牡丹江 那滋味 擦肩而过 怀念过去 北京欢迎你 突然好想你 吻的太逼真 说好的幸福呢 坐上火车去拉萨 没有人比我更爱你
愚爱 心碎 稻香 带我走 醉赤壁 魔杰座 我还想她 明天过后 一定要爱你 等爱的玫瑰 原谅我一次 越单纯越幸福 最后一次的温柔 给我一首歌的时间
白狐 光荣 降临 下雨天 小酒窝 樱花草 恋爱新手 说唱脸谱 红色高跟鞋 寂寞才说爱 深深爱过你 爱上你是个错 即使知道要见面 不是因为寂寞才想你
城府 假如 花海 兰亭序 棉花糖 舍不得 最后一次 女人如烟 外滩十八号 我们的纪念 我们的无奈 心在跳情在烧 爱上你是我的错 爱情里没有谁对谁错
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口