Exemple #1
0
        internal void UpdateServersCache(string key, RawResponse rawResponse, string pathUrl, string currentSiteUrl)
        {
            foreach (string server in _servers)
            {
#pragma warning disable 612,618
                ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
#pragma warning restore 612,618

                NameValueCollection queryString = HttpUtility.ParseQueryString(string.Empty);
                queryString["CacheLevel"]     = "First";
                queryString["key"]            = key;
                queryString["pathUrl"]        = pathUrl;
                queryString["currentSiteUrl"] = currentSiteUrl;

                queryString.ToString();

                var httpHandlerUrlBuilder = new UriBuilder(server + "_layouts/OceanikCacheSync.ashx")
                {
                    Query = queryString.ToString()
                };

                var req = (HttpWebRequest)WebRequest.Create(httpHandlerUrlBuilder.Uri);
                req.Method      = "POST";
                req.Credentials = CredentialCache.DefaultCredentials;

                byte[] rawResponseBytes = SerializeObject <RawResponse> .Object2ByteArray(rawResponse);

                req.ContentLength = rawResponseBytes.Length;
                req.ContentType   = "text/xml";

                Stream requestStream = req.GetRequestStream();
                requestStream.Write(rawResponseBytes, 0, rawResponseBytes.Length);
                requestStream.Close();
                req.GetResponse();
            }
        }
Exemple #2
0
        internal void OnUpdateRequestCache(object sender, EventArgs e)
        {
            var         application = (HttpApplication)sender;
            HttpContext context     = application.Context;

#if DEBUG
            bool isAspx = context.Request.Path.EndsWith(".aspx", StringComparison.OrdinalIgnoreCase);

            if (isAspx)
            {
                lock (LockThis)
                {
                    Trace.WriteLine("------------------------------------------------START CONTEXT-------------------------------------------------------------------");

                    var objectDump = new StringBuilder();
                    DumpObject.Dump(context, objectDump, BindingFlags.Public | BindingFlags.NonPublic);

                    Trace.WriteLine(objectDump.ToString());

                    Trace.WriteLine("------------------------------------------------END CONTEXT--------------------------------------------------------------------");

                    Trace.WriteLine("------------------------------------------------START REQUEST-------------------------------------------------------------------");

                    objectDump.Clear();
                    DumpObject.Dump(context.Request, objectDump, BindingFlags.Public | BindingFlags.NonPublic);

                    Trace.WriteLine(objectDump.ToString());

                    Trace.WriteLine("------------------------------------------------END REQUEST--------------------------------------------------------------------");

                    Trace.WriteLine("------------------------------------------------START RESPONSE-------------------------------------------------------------------");

                    objectDump.Clear();
                    DumpObject.Dump(context.Response, objectDump, BindingFlags.Public | BindingFlags.NonPublic);

                    Trace.WriteLine(objectDump.ToString());

                    Trace.WriteLine("------------------------------------------------END RESPONSE--------------------------------------------------------------------");
                }
            }
#endif

            string url = Utilities.GetUrlWithNoQueries(context);

            if (IsValidRequestToCache(context, url))
            {
                bool flag = IsCacheable(context);

                if (flag)
                {
                    string key = CreateOutputCachedItemKey(url, context);

                    RawResponse rawResponse = GetSnapshot(context.Response);

                    CacheDependency dependencies = GetDependencies(context, url);

                    context.Cache.Insert(key, rawResponse, dependencies, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(60), CacheItemPriority.Low, null);

                    if (!_serverListLoaded)
                    {
                        SPSecurity.RunWithElevatedPrivileges(delegate
                        {
                            _servers = LoadBalancingServerList(application);
                        });
                    }

                    if (_servers.Count > 0)
                    {
                        string currentSiteUrl = SPContext.Current.Site.Url;

                        if (!currentSiteUrl.EndsWith("/"))
                        {
                            currentSiteUrl = currentSiteUrl + "/";
                        }

                        try
                        {
                            SPSecurity.RunWithElevatedPrivileges(
                                () => UpdateServersCache(key, rawResponse, url, currentSiteUrl));
                        }
                        catch (Exception ex)
                        {
                            Common.SharePoint.Library.Exception.LogException(EventSourceName,
                                                                             "Error in Alphamosaik.Translator.Caching.CachingHttpModule.GetUserGroupsCollection: " + ex.Message,
                                                                             EventLogEntryType.Warning);
                        }
                    }

                    Trace.WriteLine("EffectivePercentagePhysicalMemoryLimit: " +
                                    context.Cache.EffectivePercentagePhysicalMemoryLimit);
                    Trace.WriteLine("EffectivePrivateBytesLimit: " + context.Cache.EffectivePrivateBytesLimit);
                }
            }
        }