【发布时间】:2012-02-13 23:58:37
【问题描述】:
在 HttpModule 中,我想找出调用/拦截了哪个 Web 方法并据此采取行动。例如,如果我调用 WebMethod1,做一些事情,但对 WebMethod2 什么都不做。
如果我查看soap:Header 和soap:Body,我可以看到方法名称,但是否可以解析soap:Envelope,如果可以,是哪一部分?
【问题讨论】:
标签: c# web-services inputstream httpmodule
在 HttpModule 中,我想找出调用/拦截了哪个 Web 方法并据此采取行动。例如,如果我调用 WebMethod1,做一些事情,但对 WebMethod2 什么都不做。
如果我查看soap:Header 和soap:Body,我可以看到方法名称,但是否可以解析soap:Envelope,如果可以,是哪一部分?
【问题讨论】:
标签: c# web-services inputstream httpmodule
如果这两个方法有一个公共端点,您需要解析 SOAP 消息以确定调用什么方法。在这种情况下,您需要检查<soap:Body> 标签并找到属于body 标签的第一个元素名称的操作名称。
【讨论】:
这是我解析soap消息的代码:
System.Xml.XmlDocument doc=new System.Xml.XmlDocument();
doc.LoadXml(soapMessage);
foreach (XmlNode xn in doc)
{
foreach (XmlElement element in xn)
{
if (element.Name == "soap:Body")
result = element.FirstChild.Name;
}
}
return result;
【讨论】: