在HttpModule中,我想弄清楚哪个Web方法被调用/拦截并根据它进行操作。例如,如果我调用了WebMethod1,那就做一些事情,但对WebMethod2什么都不做。
如果我看肥皂:Header和soap:Body,我可以看到方法名称,但是解析肥皂是否可以:信封,如果是,那么哪一部分?
答案 0 :(得分:2)
如果两个方法都有一个公共端点,则需要解析SOAP消息以确定调用哪个方法。在这种情况下,您需要检查<soap:Body>
标记并找到属于body标记的第一个元素名称的操作名称。
答案 1 :(得分:1)
这是解析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;