当前位置: 首页 > news >正文

怎么在南京人社网站做失业登记网站建设点击打开指定网页

怎么在南京人社网站做失业登记,网站建设点击打开指定网页,清远网站建设推广,3深圳网站建设上一篇文章地址#xff1a;构建安全的Xml Web Service系列一之初探使用Soap头 (5-22 12:53) 要分析Xml Web Service的安全性#xff0c;首先要解决的问题是我们能了解和清楚Soap消息的格式和内容#xff0c;如果获得不了SoapMessage#xff0c;分析如何能构建安全Xml w…上一篇文章地址构建安全的Xml Web Service系列一之初探使用Soap头 (5-22 12:53)          要分析Xml Web Service的安全性首先要解决的问题是我们能了解和清楚Soap消息的格式和内容如果获得不了SoapMessage分析如何能构建安全Xml web service也就无从下手即使分析出来自己也可 能模模糊糊不能定论。下面就分析下如何获得SoapMessage。    首先介绍一个类-SoapExtensionmsdn对这个类的备注为ASP.NET 允许通过扩展性机制生成与 SOAP 相关的基础结构。ASP.NET SOAP 扩展结构以一种扩展为中心该扩展可以在客户端或服务器上处理消息时在特定阶段中检查或修改消息。ASP.NET SOAP 扩展从 SoapExtension 类派生。GetInitializer 和 Initialize 方法提供其他可用机制用于初始化 SOAP 扩展以增强性能。ProcessMessage 是大多数 SOAP 扩展的核心原因是该方法在 SoapMessageStage 中定义的每一个阶段都被调用从而使 SOAP 扩展得以执行所需的该特定 SOAP 扩展的行为。对于需要修改 SOAP 请求或 SOAP 响应的 SOAP 扩展ChainStream 提供一个机会以接收要通过网络发送的建议数据。 仔细阅读这段文字如果您以前开发过windows程序那第一个应该想到的是原来web service的处理机制和windows窗口程序的消息机制竟然有着一曲同工之妙。下面谈谈如何利用这个类来截获Xml web Service请求和相应的Soap消息从而看看xml web service的庐山真面目。    首先大家先看看这个类这个类完成的功能是将Xml Web Service通过扩展的方式将每次的请求和响应的Soap消息通过日志的方式保存到文本文件中。日志记录的方式也有两种    1。针对每个WebMethod产生一个日志文件。    2。针对每个WebService产生一个日志文件 因为一个WebService可能包含一个或者多个WebMethod所以如果指定两种方法都支持的话那第二个日志两面应该包括第一个日志里面的内容而有些情况下是不需要对每个WebMethod都进行日志记录的这时候采用第一种记录方式增强了系统的灵活性。 下面是扩展了的SoapExtension  webServices        soapExtensionTypes          add typeJillzhang.TraceExtension,Jillzhang priority1  groupHigh  /        /soapExtensionTypes      /webServices 可以记录SoapMessage的SoapExtensionnamespace Jillzhang{    public class TraceExtension: SoapExtension    {        static readonly string LogRoot  System.Configuration.ConfigurationManager.AppSettings[logRoot];        Stream oldStream;        Stream newStream;        string filename;       /// summary       /// 将请求流和响应流存到内存流中已被调用       /// /summary        /// param namestream包含 SOAP 请求或响应的内存缓冲区/param        /// returns它表示此 SOAP 扩展可以修改的新内存缓冲区。/returns        public override Stream ChainStream(Stream stream)        {            oldStream  stream;            newStream  new MemoryStream();            return newStream;        }        /// summary        /// 在Xml Web Service第一次运行的时候一次性的将通过TraceExtensionAttribute传递进来的        /// 保存日志信息的文件名初始化        /// /summary        /// param namemethodInfo应用 SOAP 扩展的 XML Web services 方法的特定函数原型/param        /// param nameattribute应用于 XML Web services 方法的 SoapExtensionAttribute/param        /// returnsSOAP 扩展将对其进行初始化以用于缓存/returns        public override object GetInitializer(LogicalMethodInfo methodInfo, SoapExtensionAttribute attribute)        {            return ((TraceExtensionAttribute)attribute).Filename;        }        /// summary        /// 替代为每个方法配置的保存SoapMessage文件名而是将整个网络服务        /// 的SoapMessage都保存到一个日志文件中,这个文件路径需要在Web Service        /// 的配置文件中web.config指出,如        /// appSettings        ///  add keylogRoot valuec:\\serviceLog/        /// /appSettings        /// /summary        /// param nameWebServiceType网络服务的类型/param        /// returns用于保存日志记录的文件路径/returns        public override object GetInitializer(Type WebServiceType)        {            //return LogRoot.TrimEnd(\\)  \\  WebServiceType.FullName  .log;            return LogRoot.TrimEnd(\\)\\ WebServiceType.FullName  .log;        }        //获得文件名并将其保存下来        public override void Initialize(object initializer)        {            filename  (string)initializer;        }       /// summary       /// 当数据还为Soap格式的时候将数据写入日志       /// /summary       /// param namemessage/param        public override void ProcessMessage(SoapMessage message)        {            switch (message.Stage)            {                case SoapMessageStage.BeforeSerialize:                    break;                case SoapMessageStage.AfterSerialize:                    WriteOutput(message);                    break;                case SoapMessageStage.BeforeDeserialize:                    WriteInput(message);                    break;                case SoapMessageStage.AfterDeserialize:                    break;                default:                    throw new Exception(invalid stage);            }        }        /// summary        /// 将SoapMessage写入到日志文件        /// /summary        /// param namemessage/param        public void WriteOutput(SoapMessage message)        {            newStream.Position  0;             //创建或追加记录文件            FileStream fs  new FileStream(filename, FileMode.Append,                FileAccess.Write);            StreamWriter w  new StreamWriter(fs);            string soapString  (message is SoapServerMessage) ? Soap响应 : Soap请求;            w.WriteLine(-----  soapString   在   DateTime.Now.ToString(yyyy年MM月dd日 HH时mm分ss秒));            w.Flush();            Copy(newStream, fs);            w.Close();            newStream.Position  0;            Copy(newStream, oldStream);        }        public void WriteInput(SoapMessage message)        {            Copy(oldStream, newStream);            FileStream fs  new FileStream(filename, FileMode.Append,                FileAccess.Write);            StreamWriter w  new StreamWriter(fs);            string soapString  (message is SoapServerMessage) ?                 Soap请求 : Soap响应;            w.WriteLine(-----  soapString                  在   DateTime.Now.ToString(yyyy年MM月dd日 HH时mm分ss秒));            w.Flush();            newStream.Position  0;            Copy(newStream, fs);            w.Close();            newStream.Position  0;        }        /// summary        /// 拷贝流到流        /// /summary        /// param namefrom/param        /// param nameto/param        void Copy(Stream from, Stream to)        {            TextReader reader  new StreamReader(from);            TextWriter writer  new StreamWriter(to);            writer.WriteLine(reader.ReadToEnd());            writer.Flush();        }    }    //创建一个用于在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(Filenamed:\\data.xml,Priority0)]当然路径您可以自己设定前一节的WebMethod就变成了添加了针对WebMethod日志记录的WebMethod public MySoapHeader header  new MySoapHeader();                [WebMethod]        [SoapHeader(header)]           [TraceExtension(Filenamed:\\data.xml,Priority0)]        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 version1.0 encodingutf-8?soap:Envelope xmlns:soaphttp://schemas.xmlsoap.org/soap/envelope/ xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchemasoap:HeaderMySoapHeader xmlnshttp://tempuri.org/UserNamejillzhang/UserNamePwd123456/Pwd/MySoapHeader/soap:Headersoap:BodyHelloWorld xmlnshttp://tempuri.org/ //soap:Body/soap:Envelope-----Soap响应 在 2007年05月25日 09时06分29秒?xml version1.0 encodingutf-8?soap:Envelope xmlns:soaphttp://schemas.xmlsoap.org/soap/envelope/ xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:xsdhttp://www.w3.org/2001/XMLSchemasoap:BodyHelloWorldResponse xmlnshttp://tempuri.org/HelloWorldResultHello World/HelloWorldResult/HelloWorldResponse/soap:Body/soap:Envelope 如何采用第二种方法让WebService的每个WebMethod都能记录日志需要在Web.config中作如下的设定首先添加如下节点 webServices        soapExtensionTypes          add typeJillzhang.TraceExtension,Jillzhang priority1  groupHigh  /        /soapExtensionTypes      /webServices 然后通过配置设定日志文件保留的路径 appSettings    add keylogRoot valued:/  /appSettings 找到日志文件,里面也赫然有着SoapMessage的真面目。通过以上方法大家可以清晰地分析到SoapMessage的具体格式和内容知道了这个以后对付Web Service您就可以随心应手随心所欲如果你愿意你甚至也可以“强奸一次webservice,哈哈!上一篇文章地址构建安全的Xml Web Service系列一之初探使用Soap头 (5-22 12:53) 附终于买上房了虽然买的过程很累但现在还是很Happy!
http://www.pierceye.com/news/723399/

相关文章:

  • 首都之窗门户网站首页中山做百度网站的公司吗
  • 网站 关键字 标签dede关闭网站
  • 甘肃路桥建设集团公司网站网页搭建模板
  • 山西省住房和城乡建设厅官网长沙seo关键词
  • 红酒 网站 模板网页qq登录保护在哪里
  • 目前哪些企业需要做网站建设的呢官方网站建设最重要的是
  • 电影题材网页设计欣赏长春seo关键词排名
  • 深圳网站建设索q.479185700如何修改网站后台的用户名和密码
  • 长春网站推广专门做二手书网站或app
  • 北京智能网站建设制作什么叫优化
  • 免费移动网站建站wordpress加skype
  • 企业推广建站网页开发教程
  • 外贸网站定制开发网站虚拟主机过期
  • 学习网站建设要报班吗中国建设银行晋中分行网站
  • 学校网站建设经验介绍西安建设网站公司
  • 江西营销网站建设公司的企业诚信建设分析
  • 生活家装饰官方网站动画设计考研
  • 网站内部的信息安全建设怎么才能在百度上做引流呢
  • 男男做的视频网站wordpress 系统
  • 网站建设合同 附件上海网站制作费用
  • 知名的环保行业网站开发开发一个app难吗
  • 律师网站建设方案网站企业制作
  • 基础建设期刊在哪个网站可以查做网站咨询
  • 万网个人网站备案查询甘肃建设银行网站
  • 网站建设有什么费用wordpress国外主题网站
  • 手机网站下拉菜单代码com域名代表什么
  • 网站右侧信息跟随左侧菜单栏变化好牛网站建设
  • 手机网站pc网站免费国外服务器租用
  • 商城网站建设服务wordpress手机导航三横拦
  • app设计欣赏网站长沙制作公园仿竹护栏