public HttpClientStack(IUrlRewriter urlRewriter = null, bool enableSession = true) { this.UrlRewriter = urlRewriter; if (enableSession && Cookie == null) { Cookie = new CookieContainer(); } }
public virtual bool Delete() { bool result = this.BaseDelete(); IUrlRewriter rewriter = RewriteServiceLocator.GetInstance(Token.Instance.UrlRewriterSettings.Provider); if (rewriter != null) { rewriter.ReloadCache(); } return(result); }
void context_BeginRequest(object sender, EventArgs e) { if (HttpContext.Current.CurrentHandler == null && string.IsNullOrEmpty(HttpContext.Current.Request.CurrentExecutionFilePathExtension)) { RouteRuleCollection rules = RoutesConfig.routeRuleCollection; for (int i = 0; i < rules.Count; i++) { if (Regex.IsMatch(HttpContext.Current.Request.Path, rules[i].UrlRule, RegexOptions.IgnoreCase)) { IUrlRewriter urlRewriter = ObjectFactory.GetNamedInstance <IUrlRewriter>(rules[i].RouteHandler); urlRewriter.Rewrite(HttpContext.Current, rules[i].RedirectTo); break; } } } }
/// <summary> /// Gets the application instance of the rewrite service /// </summary> /// <param name="provider">The provider class ID</param> public static IUrlRewriter GetInstance(string provider) { IUrlRewriter service = null; // FIRST LOOK IN CACHE FOR AN EXISTING REWRITE SERVICE OBJECT HttpContext context = HttpContext.Current; if (context != null) { service = context.Cache["IRewriteService_" + provider] as IUrlRewriter; if (service != null) { return(service); } } // NO CACHED OBJECT FOUND, WHAT SERVICE ARE WE USING? if (provider == "CommerceBuilder.Catalog.DefaultUrlRewriter") { // THE DEFAULT SERVICE, MAKE SURE CACHE IS CONFIGURED service = new DefaultUrlRewriter(Store.GetCachedSettings().SeoCacheSize); } else { // SOME CUSTOM SERVICE, ATTEMPT TO CREATE AN INSTANCE try { Type providerType = Type.GetType(provider); service = (IUrlRewriter)Activator.CreateInstance(providerType); } catch (Exception ex) { Logger.Error("Unable to create instance for URL rewriter: " + provider, ex); } } // IF WE WERE ABLE TO CREATE THE SERVICE AND WE HAVE HTTPCONTEXT, CACHE THE SERVICE if (service != null && context != null) { context.Cache.Remove("IRewriteService_" + provider); context.Cache.Add("IRewriteService_" + provider, service, null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 20, 0), CacheItemPriority.High, null); } // RETURN SERVICE (NULL, IF WE COULD NOT CREATE IT) return(service); }
public virtual SaveResult Save() { CustomUrl checkExists = CustomUrlDataSource.LoadCustomUrl(this.Url); if (checkExists == null || checkExists.CustomUrlId == this.CustomUrlId) { SaveResult result = this.BaseSave(); IUrlRewriter rewriter = RewriteServiceLocator.GetInstance(Token.Instance.UrlRewriterSettings.Provider); if (rewriter != null) { rewriter.ReloadCache(); } return(result); } else { throw new InvalidOperationException("The value of Url is already defined in the database. Url must be unique."); } }
protected String GetRewriteUrl(String requestUrl) { // APPEND APPLICATION PATH String applicationPath = Request.ApplicationPath; if (!applicationPath.EndsWith("/")) { applicationPath += "/"; } requestUrl = applicationPath + requestUrl; IUrlRewriter rewriter = AbleContext.Resolve <IUrlRewriter>(); requestUrl = rewriter.RewriteUrl(requestUrl); // REMOVE APPLICATION PATH if (requestUrl.StartsWith(applicationPath)) { requestUrl = requestUrl.Substring(applicationPath.Length); } return(requestUrl); }
private static bool RewriteUrl(IUrlRewriter rewriter, HttpApplication application) { string rewrittenUrl = rewriter.RewriteUrl(application.Context.Request.RawUrl, application.Request.Headers); if (String.IsNullOrWhiteSpace(rewrittenUrl)) { return false; } switch (rewriter.RewriteType) { case UrlRewriteType.TemporaryRedirect: application.Context.Response.AppendHeader(LocationHeaderName, rewrittenUrl); application.Context.Response.StatusCode = (int) RedirectType.TemporaryRedirect; application.Context.Response.StatusDescription = PascalCaseToSentenceConverter.Convert(RedirectType.TemporaryRedirect.ToString()); application.Context.Response.End(); return true; case UrlRewriteType.PermanentRedirect: application.Context.Response.AppendHeader(LocationHeaderName, rewrittenUrl); application.Context.Response.StatusCode = (int) RedirectType.PermanentRedirect; application.Context.Response.StatusDescription = PascalCaseToSentenceConverter.Convert(RedirectType.PermanentRedirect.ToString()); application.Context.Response.End(); return true; default: application.Context.RewritePath(rewrittenUrl); return false; } }