Как я настраиваю ASP.Net OutputCache для варьирования http по сравнению с https?

При использовании.NET 3.5 можно использовать HashSet . Это верно, что.NET не обслуживает наборы, а также Java делает все же.

Wintellect PowerCollections может помочь также.

14
задан James A Mohler 16 July 2016 в 22:05
поделиться

3 ответа

Я думаю, что вы можете создать VaryByCustom = "scheme" и добавить это в свой файл Global.asax.cs (включая пару других, которые я использую, а также версию приложения и пользователя):

    public override string GetVaryByCustomString(HttpContext context, string custom)
    {
        if (custom.Equals("version", StringComparison.CurrentCultureIgnoreCase))
        {
            Assembly asm = Assembly.GetExecutingAssembly();
            string[] parts = asm.FullName.Split(',');
            string version = parts[1].Trim().ToLower();
            return version;
        }
        else if (custom.Equals("user", StringComparison.CurrentCultureIgnoreCase))
        {
            var user = Membership.Users.CurrentUser;
            return null == user ? string.Empty : user.Id.ToString();
        }
        else if (custom.Equals("scheme", StringComparison.CurrentCultureIgnoreCase))
        {
            var scheme = context.Request.IsSecureConnection ? "https" : "http";
            return scheme;
        }
        else
            return base.GetVaryByCustomString(context, custom);
    }
8
ответ дан 1 December 2019 в 12:39
поделиться

Я никогда не пробовал, но вы могли бы использовать свойство Outputcache VaryByHeader и заголовок «host», который указывает хост в Интернете и номер порта запрашиваемого ресурса.

У меня возникает вопрос: почему вы перенаправляете на страницу A через безопасное соединение после страницы B. Если это незащищенная страница, не могли бы вы исправить перенаправление PageB, чтобы всегда перенаправлять на небезопасную.

1
ответ дан 1 December 2019 в 12:39
поделиться

Это не отвечает на вопрос в том виде, в котором он сформулирован, но может избавить вас от необходимости варьироваться в зависимости от схемы. Если вы жестко кодируете "http: //" для URL-адресов Scene7, вы можете изменить их на URL-адреса, относящиеся к схеме.

<img src="http://site.scene7.com/images/someimage.jpg" />
=>
<img src="//site.scene7.com/images/someimage.jpg" />

Это заставит браузер автоматически запрашивать ресурс с той же схемой, что и ссылающаяся страница. Это, конечно, при условии, что у вас есть сертификат SSL для вашего домена scene7.

13
ответ дан 1 December 2019 в 12:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: