【问题标题】:How do you determine which WS method was called based on Request.InputStream?如何根据 Request.InputStream 确定调用了哪个 WS 方法?
【发布时间】:2012-02-13 23:58:37
【问题描述】:

在 HttpModule 中,我想找出调用/拦截了哪个 Web 方法并据此采取行动。例如,如果我调用 WebMethod1,做一些事情,但对 WebMethod2 什么都不做。

如果我查看soap:Header 和soap:Body,我可以看到方法名称,但是否可以解析soap:Envelope,如果可以,是哪一部分?

【问题讨论】:

    标签: c# web-services inputstream httpmodule


    【解决方案1】:

    如果这两个方法有一个公共端点,您需要解析 SOAP 消息以确定调用什么方法。在这种情况下,您需要检查<soap:Body> 标签并找到属于body 标签的第一个元素名称的操作名称。

    【讨论】:

      【解决方案2】:

      这是我解析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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-25
        相关资源
        最近更新 更多