在SoapExtension取当前Action的探索

近几天考虑为webservice加密,发现SoapMessage的Action很不可靠。

 

Code

 

苦苦查找的过程终于感觉到WCF的好处,当然转换可行性似乎没有。跟踪代码发现Request.Headers有SOAPAction可用。

case SoapMessageStage.BeforeDeserialize:
    
//this.actionName = message.Action;//客户端可以取出
    string actionName = (string)HttpContext.Current.Request.Headers["SOAPAction"].Trim('"');

 

我希望整个扩展类都能随时用上Action,于是我把取Action写在了初始化的两个方法里。

 

Code

 

为什么是两个,说是在每个请求时第一个方法[GetInitializer(Type t)]只会执行一次,但我们的SoapExtension扩展类会被多次构造(跟踪代码看起码两次),每构造一次都会执行第二个方法[Initialize(object initializer)],并把第一个方法返回的object作为第二个方法的参数[initializer]。上面代码的扩展类是ConnectEncryption,继承自 SoapExtension。

posted @ 2009-07-03 09:35  生命体验之kevin-Y  阅读(403)  评论(0编辑  收藏  举报