示例#1
0
        void OnEnter(Object source, EventArgs eventArgs)
        {
            HttpApplication app        = (HttpApplication)source;
            HttpContext     context    = app.Context;
            Stream          HttpStream = context.Request.InputStream;

            // Save the current position of stream.
            long posStream = HttpStream.Position;

            // If the request contains an HTTP_SOAPACTION
            // header, look at this message.
            if (context.Request.ServerVariables["HTTP_SOAPACTION"] == null)
            {
                return;
            }

            // Load the body of the HTTP message
            // into an XML document.
            XmlDocument dom = new XmlDocument();
            string      soapUser;
            string      soapPassword;

            try
            {
                dom.Load(HttpStream);

                // Reset the stream position.
                HttpStream.Position = posStream;

                // Bind to the Authentication header.
                soapUser =
                    dom.GetElementsByTagName("UserName").Item(0).InnerText;
                soapPassword =
                    dom.GetElementsByTagName("Password").Item(0).InnerText;
            }
            catch (Exception e)
            {
                // Reset the position of stream.
                HttpStream.Position = posStream;

                // Throw a SOAP exception.
                XmlQualifiedName name          = new XmlQualifiedName("Load");
                SoapException    soapException = new SoapException("Unable to read SOAP request", name, e);
                throw soapException;
            }

            // Raise the custom global.asax event.
            OnAuthenticate(new WebServiceAuthenticationEvent
                               (context, soapUser, soapPassword));
            var eee = new WebServiceAuthenticationEvent
                          (context, soapUser, soapPassword);

            //if (eee.User != null)
            eee.Context.User = eee.Principal;
            return;
        }
示例#2
0
        private void OnAuthenticate(WebServiceAuthenticationEvent e)
        {
            if (eventHandler == null)
            {
                return;
            }

            eventHandler(this, e);
            if (e.User != null)
            {
                e.Context.User = e.Principal;
            }
        }