<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://forums.iis.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:cs="http://blogs.iis.net/"><channel><title>IIS7 - General</title><link>http://forums.iis.net/1041.aspx</link><description>For any general questions relating to IIS 7</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>IIS7: HTTP Compression failing</title><link>http://forums.iis.net/thread/1888368.aspx</link><pubDate>Thu, 25 Dec 2008 22:09:25 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1888368</guid><dc:creator>pajocomo</dc:creator><slash:comments>0</slash:comments><comments>http://forums.iis.net/thread/1888368.aspx</comments><wfw:commentRss>http://forums.iis.net/commentrss.aspx?SectionID=1041&amp;PostID=1888368</wfw:commentRss><description>&lt;p&gt;Hi all,&lt;/p&gt;
&lt;p&gt;I&amp;#39;m trying to build a reverse proxy, but I&amp;#39;m not getting HTTP compression working using IIS 7 on Win2008.&lt;/p&gt;
&lt;p&gt;Either using the compressed response from the remote server or using IIS&amp;#39;s compression, I cannot make IE7 or Fiddler2 to accept the compressed content.&lt;/p&gt;
&lt;p&gt;Here is my code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;global.asax.cs:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;namespace &lt;/span&gt;ReverseProxy
{
    &lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;System;
    &lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;System.Collections.Generic;
    &lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;System.Collections.Specialized;
    &lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;System.IO;
    &lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;System.Net;
    &lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;System.Web;

    &lt;span style="COLOR:blue;"&gt;public class &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;ReverseProxyHttpApplication &lt;/span&gt;: &lt;span style="COLOR:#2b91af;"&gt;HttpApplication
    &lt;/span&gt;{

        &lt;span style="COLOR:blue;"&gt;#region &lt;/span&gt;Private Constants

        &lt;span style="COLOR:blue;"&gt;private const int &lt;/span&gt;BUFFER_SIZE = 65536;
        &lt;span style="COLOR:blue;"&gt;private const string &lt;/span&gt;StartsWithAppSettingsKey = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;StartsWith&amp;quot;&lt;/span&gt;;
        &lt;span style="COLOR:blue;"&gt;private const string &lt;/span&gt;ReplaceWithAppSettingsKey = &lt;span style="COLOR:#a31515;"&gt;&amp;quot;ReplaceWith&amp;quot;&lt;/span&gt;;

        &lt;span style="COLOR:blue;"&gt;#endregion

        private static &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;HttpWebRequest&lt;/span&gt;, &lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;gt;&amp;gt; setHeaders;

        &lt;span style="COLOR:blue;"&gt;private byte&lt;/span&gt;[] bytes = &lt;span style="COLOR:blue;"&gt;new byte&lt;/span&gt;[BUFFER_SIZE];

        &lt;span style="COLOR:blue;"&gt;public &lt;/span&gt;ReverseProxyHttpApplication()
        {
            &lt;span style="COLOR:#2b91af;"&gt;ReverseProxyHttpApplication&lt;/span&gt;.setHeaders = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Dictionary&lt;/span&gt;&amp;lt;&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;, &lt;span style="COLOR:#2b91af;"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;HttpWebRequest&lt;/span&gt;, &lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;gt;&amp;gt;(&lt;span style="COLOR:#2b91af;"&gt;StringComparer&lt;/span&gt;.OrdinalIgnoreCase)
            {
&lt;span style="COLOR:blue;"&gt;#if &lt;/span&gt;DEBUG
                {&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Accept-Encoding&amp;quot;&lt;/span&gt;, (httpWebRequest, value) =&amp;gt; { }},
&lt;span style="COLOR:blue;"&gt;#endif
                &lt;/span&gt;{&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Accept&amp;quot;&lt;/span&gt;, (httpWebRequest, value) =&amp;gt; httpWebRequest.Accept = value},
                {&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Connection&amp;quot;&lt;/span&gt;, &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;},
                {&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Content-Type&amp;quot;&lt;/span&gt;, (httpWebRequest, value) =&amp;gt; httpWebRequest.ContentType = value},
                {&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Content-Length&amp;quot;&lt;/span&gt;, &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;},
                {&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Expect&amp;quot;&lt;/span&gt;, &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;},
                {&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Date&amp;quot;&lt;/span&gt;, &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;},
                {&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Host&amp;quot;&lt;/span&gt;, &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;},
                {&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Referer&amp;quot;&lt;/span&gt;, (httpWebRequest, value) =&amp;gt; httpWebRequest.Referer = value},
                {&lt;span style="COLOR:#a31515;"&gt;&amp;quot;TransferEncoding&amp;quot;&lt;/span&gt;, (httpWebRequest, value) =&amp;gt;
                    {
                        httpWebRequest.SendChunked = &lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;;
                        httpWebRequest.TransferEncoding = value;
                    }},
                {&lt;span style="COLOR:#a31515;"&gt;&amp;quot;User-Agent&amp;quot;&lt;/span&gt;, (httpWebRequest, value) =&amp;gt; httpWebRequest.UserAgent = value}
            };
        }

        &lt;span style="COLOR:blue;"&gt;protected void &lt;/span&gt;Application_BeginRequest(&lt;span style="COLOR:blue;"&gt;object &lt;/span&gt;sender, &lt;span style="COLOR:#2b91af;"&gt;EventArgs &lt;/span&gt;e)
        {
            &lt;span style="COLOR:blue;"&gt;string &lt;/span&gt;localPath = &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;;
            &lt;span style="COLOR:blue;"&gt;string &lt;/span&gt;remotePath;
            &lt;span style="COLOR:#2b91af;"&gt;HttpContext &lt;/span&gt;context = &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Context;

            &lt;span style="COLOR:blue;"&gt;try
            &lt;/span&gt;{
                &lt;span style="COLOR:#2b91af;"&gt;HttpRequest &lt;/span&gt;request = &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Request;
                &lt;span style="COLOR:#2b91af;"&gt;HttpResponse &lt;/span&gt;response = &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.Response;

                localPath = request.AppRelativeCurrentExecutionFilePath;

                remotePath = GetRemotePath(localPath);

                &lt;span style="COLOR:blue;"&gt;if &lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(remotePath))
                {
                    &lt;span style="COLOR:blue;"&gt;return&lt;/span&gt;;
                }

                &lt;span style="COLOR:#2b91af;"&gt;HttpWebRequest &lt;/span&gt;httpWebRequest = SendRemoteRequest(remotePath, request);

                GetRemoteResponse(response, httpWebRequest);

                response.Flush();
            }
            &lt;span style="COLOR:blue;"&gt;finally
            &lt;/span&gt;{
                &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.CompleteRequest();
            }
        }

        &lt;span style="COLOR:blue;"&gt;private static string &lt;/span&gt;GetRemotePath(&lt;span style="COLOR:blue;"&gt;string &lt;/span&gt;localPath)
        {
            &lt;span style="COLOR:blue;"&gt;string &lt;/span&gt;remotePath;

            &lt;span style="COLOR:blue;"&gt;string &lt;/span&gt;startsWith = System.Web.Configuration.&lt;span style="COLOR:#2b91af;"&gt;WebConfigurationManager&lt;/span&gt;.AppSettings[StartsWithAppSettingsKey];

            &lt;span style="COLOR:blue;"&gt;if &lt;/span&gt;(!localPath.StartsWith(startsWith, &lt;span style="COLOR:#2b91af;"&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase))
            {
                &lt;span style="COLOR:blue;"&gt;return null&lt;/span&gt;;
            }

            remotePath = System.Web.Configuration.&lt;span style="COLOR:#2b91af;"&gt;WebConfigurationManager&lt;/span&gt;.AppSettings[ReplaceWithAppSettingsKey] + localPath.Substring(startsWith.Length);

            &lt;span style="COLOR:blue;"&gt;return &lt;/span&gt;remotePath;
        }

        &lt;span style="COLOR:blue;"&gt;private &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;HttpWebRequest &lt;/span&gt;SendRemoteRequest(&lt;span style="COLOR:blue;"&gt;string &lt;/span&gt;remotePath, &lt;span style="COLOR:#2b91af;"&gt;HttpRequest &lt;/span&gt;request)
        {
            &lt;span style="COLOR:#2b91af;"&gt;HttpWebRequest &lt;/span&gt;httpWebRequest;

            &lt;span style="COLOR:#2b91af;"&gt;Uri &lt;/span&gt;remoteUri = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Uri&lt;/span&gt;(remotePath);

            httpWebRequest = (&lt;span style="COLOR:#2b91af;"&gt;HttpWebRequest&lt;/span&gt;)(&lt;span style="COLOR:#2b91af;"&gt;WebRequest&lt;/span&gt;.Create(remoteUri));
            httpWebRequest.Method = request.HttpMethod;

            SetRequestHeaders(httpWebRequest, request.Headers);

            SetRequestCookies(remoteUri, httpWebRequest, request.Cookies);

            &lt;span style="COLOR:blue;"&gt;if &lt;/span&gt;(request.ContentLength &amp;gt; 0)
            {
                &lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;Stream &lt;/span&gt;requestStream = httpWebRequest.GetRequestStream())
                {
                    &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.CopyStream(request.InputStream, requestStream);
                }
            }

            &lt;span style="COLOR:blue;"&gt;return &lt;/span&gt;httpWebRequest;
        }

        &lt;span style="COLOR:blue;"&gt;private void &lt;/span&gt;SetRequestHeaders(&lt;span style="COLOR:#2b91af;"&gt;HttpWebRequest &lt;/span&gt;httpWebRequest, &lt;span style="COLOR:#2b91af;"&gt;NameValueCollection &lt;/span&gt;requestHeaders)
        {
            &lt;span style="COLOR:#2b91af;"&gt;WebHeaderCollection &lt;/span&gt;remoteRequestHeaders = httpWebRequest.Headers;

            &lt;span style="COLOR:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;string &lt;/span&gt;header &lt;span style="COLOR:blue;"&gt;in &lt;/span&gt;requestHeaders)
            {
                &lt;span style="COLOR:blue;"&gt;string &lt;/span&gt;value = requestHeaders[header];
                &lt;span style="COLOR:#2b91af;"&gt;Action&lt;/span&gt;&amp;lt;&lt;span style="COLOR:#2b91af;"&gt;HttpWebRequest&lt;/span&gt;, &lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;&amp;gt; action;
                &lt;span style="COLOR:blue;"&gt;if &lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;ReverseProxyHttpApplication&lt;/span&gt;.setHeaders.TryGetValue(header, &lt;span style="COLOR:blue;"&gt;out &lt;/span&gt;action))
                {
                    &lt;span style="COLOR:blue;"&gt;if &lt;/span&gt;(action != &lt;span style="COLOR:blue;"&gt;null&lt;/span&gt;)
                    {
                        action(httpWebRequest, value);
                    }
                }
                &lt;span style="COLOR:blue;"&gt;else
                &lt;/span&gt;{
                    remoteRequestHeaders.Add(header, value);
                }
            }
        }

        &lt;span style="COLOR:blue;"&gt;private static void &lt;/span&gt;SetRequestCookies(&lt;span style="COLOR:#2b91af;"&gt;Uri &lt;/span&gt;remoteUri, &lt;span style="COLOR:#2b91af;"&gt;HttpWebRequest &lt;/span&gt;httpWebRequest, &lt;span style="COLOR:#2b91af;"&gt;HttpCookieCollection &lt;/span&gt;requestCookies)
        {
            &lt;span style="COLOR:blue;"&gt;if &lt;/span&gt;(requestCookies.Count &amp;gt; 0)
            {
                httpWebRequest.CookieContainer = &lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;CookieContainer&lt;/span&gt;();

                &lt;span style="COLOR:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;string &lt;/span&gt;cookieName &lt;span style="COLOR:blue;"&gt;in &lt;/span&gt;requestCookies)
                {
                    &lt;span style="COLOR:#2b91af;"&gt;HttpCookie &lt;/span&gt;httpCookie = requestCookies[cookieName];

                    httpWebRequest.CookieContainer.Add(&lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;Cookie
                    &lt;/span&gt;{
                        Name = cookieName,
                        Path = httpCookie.Path,
                        Domain = (&lt;span style="COLOR:blue;"&gt;string&lt;/span&gt;.IsNullOrEmpty(httpCookie.Domain)) ? remoteUri.Authority : httpCookie.Domain,
                        HttpOnly = httpCookie.HttpOnly,
                        Expires = httpCookie.Expires,
                        Secure = httpCookie.Secure
                    });
                }
            }
        }

        &lt;span style="COLOR:blue;"&gt;private void &lt;/span&gt;GetRemoteResponse(&lt;span style="COLOR:#2b91af;"&gt;HttpResponse &lt;/span&gt;response, &lt;span style="COLOR:#2b91af;"&gt;HttpWebRequest &lt;/span&gt;httpWebRequest)
        {
            &lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;HttpWebResponse &lt;/span&gt;httpWebResponse = (&lt;span style="COLOR:#2b91af;"&gt;HttpWebResponse&lt;/span&gt;)(httpWebRequest.GetResponse()))
            {
                &lt;span style="COLOR:blue;"&gt;if &lt;/span&gt;(httpWebRequest.HaveResponse)
                {
                    &lt;span style="COLOR:blue;"&gt;using &lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;Stream &lt;/span&gt;remoteResponseStream = httpWebResponse.GetResponseStream())
                    {
                        &lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.CopyStream(remoteResponseStream, response.OutputStream);
                    }

                    SetResponseHeaders(response, httpWebResponse.Headers);

                    SetResponseCookies(response, httpWebResponse.Cookies);
                }
            }
        }

        &lt;span style="COLOR:blue;"&gt;private static void &lt;/span&gt;SetResponseHeaders(&lt;span style="COLOR:#2b91af;"&gt;HttpResponse &lt;/span&gt;response, &lt;span style="COLOR:#2b91af;"&gt;WebHeaderCollection &lt;/span&gt;remoteResponseHeaders)
        {
            response.ClearHeaders();

            &lt;span style="COLOR:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="COLOR:blue;"&gt;string &lt;/span&gt;header &lt;span style="COLOR:blue;"&gt;in &lt;/span&gt;remoteResponseHeaders)
            {
                &lt;span style="COLOR:blue;"&gt;if &lt;/span&gt;(&lt;span style="COLOR:#a31515;"&gt;&amp;quot;Server&amp;quot;&lt;/span&gt;.Equals(header, &lt;span style="COLOR:#2b91af;"&gt;StringComparison&lt;/span&gt;.OrdinalIgnoreCase))
                {
                    &lt;span style="COLOR:blue;"&gt;continue&lt;/span&gt;;
                }

                response.AppendHeader(header, remoteResponseHeaders[header]);
            }
        }

        &lt;span style="COLOR:blue;"&gt;private static void &lt;/span&gt;SetResponseCookies(&lt;span style="COLOR:#2b91af;"&gt;HttpResponse &lt;/span&gt;response, &lt;span style="COLOR:#2b91af;"&gt;CookieCollection &lt;/span&gt;responseCookies)
        {
            response.Cookies.Clear();

            &lt;span style="COLOR:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="COLOR:#2b91af;"&gt;Cookie &lt;/span&gt;cookie &lt;span style="COLOR:blue;"&gt;in &lt;/span&gt;responseCookies)
            {
                response.Cookies.Add(&lt;span style="COLOR:blue;"&gt;new &lt;/span&gt;&lt;span style="COLOR:#2b91af;"&gt;HttpCookie&lt;/span&gt;(cookie.Name, cookie.Value)
                {
                    Path = cookie.Path,
                    Domain = cookie.Domain,
                    HttpOnly = cookie.HttpOnly,
                    Expires = cookie.Expires,
                    Secure = cookie.Secure
                });
            }
        }

        &lt;span style="COLOR:blue;"&gt;private void &lt;/span&gt;CopyStream(&lt;span style="COLOR:#2b91af;"&gt;Stream &lt;/span&gt;from, &lt;span style="COLOR:#2b91af;"&gt;Stream &lt;/span&gt;to)
        {
            &lt;span style="COLOR:blue;"&gt;int &lt;/span&gt;read;
            &lt;span style="COLOR:blue;"&gt;while &lt;/span&gt;((read = from.Read(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.bytes, 0, BUFFER_SIZE)) &amp;gt; 0)
            {
                to.Write(&lt;span style="COLOR:blue;"&gt;this&lt;/span&gt;.bytes, 0, read);
            }
        }
    }
}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;&lt;u&gt;web.config:&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="COLOR:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;xml &lt;/span&gt;&lt;span style="COLOR:red;"&gt;version&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;1.0&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;encoding&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;UTF-8&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;?&amp;gt;
&amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;system.diagnostics&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;assert &lt;/span&gt;&lt;span style="COLOR:red;"&gt;assertuienabled&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;sources&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;source &lt;/span&gt;&lt;span style="COLOR:red;"&gt;name&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;ReverseProxy&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;switchValue&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;Verbose&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;source&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;sources&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;system.diagnostics&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;appSettings&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;clear &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;add &lt;/span&gt;&lt;span style="COLOR:red;"&gt;key&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;StartsWith&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;value&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;~/&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;add &lt;/span&gt;&lt;span style="COLOR:red;"&gt;key&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;ReplaceWith&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;value&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;http://msdn.microsoft.com/&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;appSettings&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;authentication &lt;/span&gt;&lt;span style="COLOR:red;"&gt;mode&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;None&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;httpHandlers&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;clear &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;httpHandlers&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;httpModules&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;clear &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;httpModules&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;compilation &lt;/span&gt;&lt;span style="COLOR:red;"&gt;debug&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;true&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;system.web&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;validation &lt;/span&gt;&lt;span style="COLOR:red;"&gt;validateIntegratedModeConfiguration&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;false&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;handlers&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;clear &lt;/span&gt;&lt;span style="COLOR:blue;"&gt;/&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;add &lt;/span&gt;&lt;span style="COLOR:red;"&gt;name&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;dummy&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;path&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;*&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;verb&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;*&lt;/span&gt;&amp;quot; &lt;span style="COLOR:red;"&gt;type&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="COLOR:blue;"&gt;System.Web.HttpForbiddenHandler, System.Web&lt;/span&gt;&amp;quot; &lt;span style="COLOR:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;handlers&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;modules&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;modules&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;system.webServer&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR:#a31515;"&gt;configuration&lt;/span&gt;&lt;span style="COLOR:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;</description></item></channel></rss>