コード例 #1
0
        private void InitRequest()
        {
            int     num2;
            DataSet ds  = _masterRequest.Clone();
            DataRow row = this.NewRow(ds, "Trace_Request");

            row["Trace_Time_of_Request"] = this._context.Timestamp.ToString("G");
            string rawUrl = this._context.Request.RawUrl;
            int    index  = rawUrl.IndexOf("?", StringComparison.Ordinal);

            if (index != -1)
            {
                rawUrl = rawUrl.Substring(0, index);
            }
            row["Trace_Url"]          = rawUrl;
            row["Trace_Request_Type"] = this._context.Request.HttpMethod;
            try
            {
                row["Trace_Request_Encoding"] = this._context.Request.ContentEncoding.EncodingName;
            }
            catch
            {
            }
            if (this.TraceMode == System.Web.TraceMode.SortByCategory)
            {
                ds.Tables["Trace_Trace_Information"].DefaultView.Sort = "Trace_Category";
            }
            this.AddRow(ds, "Trace_Request", row);
            string[] allKeys = this._context.Request.Headers.AllKeys;
            for (num2 = 0; num2 < allKeys.Length; num2++)
            {
                row = this.NewRow(ds, "Trace_Headers_Collection");
                row["Trace_Name"]  = allKeys[num2];
                row["Trace_Value"] = this._context.Request.Headers[allKeys[num2]];
                this.AddRow(ds, "Trace_Headers_Collection", row);
            }
            ArrayList list = this._context.Response.GenerateResponseHeaders(false);
            int       num3 = (list != null) ? list.Count : 0;

            for (num2 = 0; num2 < num3; num2++)
            {
                HttpResponseHeader header = (HttpResponseHeader)list[num2];
                row = this.NewRow(ds, "Trace_Response_Headers_Collection");
                row["Trace_Name"]  = header.Name;
                row["Trace_Value"] = header.Value;
                this.AddRow(ds, "Trace_Response_Headers_Collection", row);
            }
            allKeys = this._context.Request.Form.AllKeys;
            for (num2 = 0; num2 < allKeys.Length; num2++)
            {
                row = this.NewRow(ds, "Trace_Form_Collection");
                row["Trace_Name"]  = allKeys[num2];
                row["Trace_Value"] = this._context.Request.Form[allKeys[num2]];
                this.AddRow(ds, "Trace_Form_Collection", row);
            }
            allKeys = this._context.Request.QueryString.AllKeys;
            for (num2 = 0; num2 < allKeys.Length; num2++)
            {
                row = this.NewRow(ds, "Trace_Querystring_Collection");
                row["Trace_Name"]  = allKeys[num2];
                row["Trace_Value"] = this._context.Request.QueryString[allKeys[num2]];
                this.AddRow(ds, "Trace_Querystring_Collection", row);
            }
            if (HttpRuntime.HasAppPathDiscoveryPermission())
            {
                allKeys = this._context.Request.ServerVariables.AllKeys;
                for (num2 = 0; num2 < allKeys.Length; num2++)
                {
                    row = this.NewRow(ds, "Trace_Server_Variables");
                    row["Trace_Name"]  = allKeys[num2];
                    row["Trace_Value"] = this._context.Request.ServerVariables.Get(allKeys[num2]);
                    this.AddRow(ds, "Trace_Server_Variables", row);
                }
            }
            this._requestData = ds;
        }
コード例 #2
0
        /*  InitRequest
         *  Initialize the given dataset with basic
         *  request information
         */
        private void InitRequest()
        {
            // Master request is assumed to be initialized first
            System.Web.Util.Debug.Assert(_masterRequest != null);

            DataSet requestData = _masterRequest.Clone();

            // request info
            DataRow row = NewRow(requestData, SR.Trace_Request);

            row[SR.Trace_Time_of_Request] = _context.Timestamp.ToString("G");

            string url = _context.Request.RawUrl;
            int    loc = url.IndexOf("?", StringComparison.Ordinal);

            if (loc != -1)
            {
                url = url.Substring(0, loc);
            }
            row[SR.Trace_Url] = url;

            row[SR.Trace_Request_Type] = _context.Request.HttpMethod;
            try {
                row[SR.Trace_Request_Encoding] = _context.Request.ContentEncoding.EncodingName;
            }
            catch {
                // if we get an exception getting the ContentEncoding, most likely
                // there's an error in the config file.  Just ignore it so we can finish InitRequest.
            }

            if (TraceMode == TraceMode.SortByCategory)
            {
                requestData.Tables[SR.Trace_Trace_Information].DefaultView.Sort = SR.Trace_Category;
            }
            AddRow(requestData, SR.Trace_Request, row);

            // header info
            try {
                //

                AddCollectionToRequestData(requestData, SR.Trace_Headers_Collection, _context.Request.Unvalidated.Headers);
            }
            catch {
                // ---- exceptions when we fail to get the unvalidated collection
            }

            // response header info
            ArrayList headers = _context.Response.GenerateResponseHeaders(false);
            int       n       = (headers != null) ? headers.Count : 0;

            for (int i = 0; i < n; i++)
            {
                HttpResponseHeader h = (HttpResponseHeader)headers[i];
                row = NewRow(requestData, SR.Trace_Response_Headers_Collection);
                row[SR.Trace_Name]  = h.Name;
                row[SR.Trace_Value] = h.Value;
                AddRow(requestData, SR.Trace_Response_Headers_Collection, row);
            }

            //form info
            try {
                AddCollectionToRequestData(requestData, SR.Trace_Form_Collection, _context.Request.Unvalidated.Form);
            }
            catch {
                // ---- exceptions when we fail to get the unvalidated collection
            }

            //QueryString info
            try {
                AddCollectionToRequestData(requestData, SR.Trace_Querystring_Collection, _context.Request.Unvalidated.QueryString);
            }
            catch {
                // ---- exceptions when we fail to get the unvalidated collection
            }

            //Server Variable info
            if (HttpRuntime.HasAppPathDiscoveryPermission())
            {
                AddCollectionToRequestData(requestData, SR.Trace_Server_Variables, _context.Request.ServerVariables);
            }

            _requestData = requestData;

            if (HttpRuntime.UseIntegratedPipeline)
            {
                // Dev10 914119: When trace is enabled, the request entity is read and no longer
                // available to IIS.  In integrated mode, we have an API that allows us to reinsert
                // the entity.  Although it is expensive, performance is not a concern when
                // trace is enalbed, so we will reinsert just in case a native handler needs
                // to access the entity.  I decided not to check the current handler, since
                // that can be changed if someone sets the IIS script map.
                _context.Request.InsertEntityBody();
            }
        }
コード例 #3
0
        /*  InitRequest
         *  Initialize the given dataset with basic
         *  request information
         */
        private void InitRequest()
        {
            // request info
            DataRow row = NewRow(_requestData, SR.Trace_Request);

            row[SR.Trace_Time_of_Request] = _context.Timestamp.ToString("G");

            string url = _context.Request.RawUrl;
            int    loc = url.IndexOf("?");

            if (loc != -1)
            {
                url = url.Substring(0, loc);
            }
            row[SR.Trace_Url] = url;

            row[SR.Trace_Request_Type] = _context.Request.HttpMethod;
            try {
                row[SR.Trace_Request_Encoding] = _context.Request.ContentEncoding.EncodingName;
            }
            catch {
                // if we get an exception getting the ContentEncoding, most likely
                // there's an error in the config file.  Just ignore it so we can finish InitRequest.
            }

            if (TraceMode == TraceMode.SortByCategory)
            {
                _requestData.Tables[SR.Trace_Trace_Information].DefaultView.Sort = SR.Trace_Category;
            }
            AddRow(_requestData, SR.Trace_Request, row);

            // header info
            int i;

            String[] keys = _context.Request.Headers.AllKeys;
            for (i = 0; i < keys.Length; i++)
            {
                row = NewRow(_requestData, SR.Trace_Headers_Collection);
                row[SR.Trace_Name]  = keys[i];
                row[SR.Trace_Value] = _context.Request.Headers[keys[i]];
                AddRow(_requestData, SR.Trace_Headers_Collection, row);
            }

            //form info
            keys = _context.Request.Form.AllKeys;
            for (i = 0; i < keys.Length; i++)
            {
                row = NewRow(_requestData, SR.Trace_Form_Collection);
                row[SR.Trace_Name]  = keys[i];
                row[SR.Trace_Value] = _context.Request.Form[keys[i]];
                AddRow(_requestData, SR.Trace_Form_Collection, row);
            }

            //QueryString info
            keys = _context.Request.QueryString.AllKeys;
            for (i = 0; i < keys.Length; i++)
            {
                row = NewRow(_requestData, SR.Trace_Querystring_Collection);
                row[SR.Trace_Name]  = keys[i];
                row[SR.Trace_Value] = _context.Request.QueryString[keys[i]];
                AddRow(_requestData, SR.Trace_Querystring_Collection, row);
            }

            //Server Variable info
            if (HttpRuntime.HasAppPathDiscoveryPermission())
            {
                keys = _context.Request.ServerVariables.AllKeys;
                for (i = 0; i < keys.Length; i++)
                {
                    row = NewRow(_requestData, SR.Trace_Server_Variables);
                    row[SR.Trace_Name]  = keys[i];
                    row[SR.Trace_Value] = _context.Request.ServerVariables.Get(keys[i]);
                    AddRow(_requestData, SR.Trace_Server_Variables, row);
                }
            }
        }