OnActionExecuting между различными средами - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть проблема. У меня есть windows сервер, на котором размещен наш сайт + целевые страницы. Пример целевой страницы: https://lp.cmtrading.com/en/2019/8/500_risk_free/?a=41111&vvar1=test&vvar2=test Как вы можете видеть, в cook ie он сохраняет параметр 'a' и другой параметр с именем: MARKETING_CONTACT_TRACKING, который сохраняет в json другие параметры запроса строка. Это делается с помощью OnActionExecuting, как вы можете видеть здесь:

public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var paramsAffiliates = new[] { Main.MARKETING_AFFILIATE_PARAM, Main.MARKETING_CXD_PARAM, Main.MARKETING_SUBAFFILIATE_PARAM };
        SaveQueryToCookie(filterContext, paramsAffiliates);


        SaveContactTrackingToCookie(filterContext);
        base.OnActionExecuting(filterContext);
        return;
    }
private void SaveQueryToCookie(ActionExecutingContext filterContext, string[] paramNames)
        {
            var dic = paramNames.ToDictionary(a => a, a => filterContext.HttpContext.Request.QueryString[a]);
            if (dic.Values.Any(a => !string.IsNullOrWhiteSpace(a)))
            {
                foreach (var key in paramNames)
                {
                    var value = string.IsNullOrWhiteSpace(dic[key])
                        ? null
                        : dic[key];
                    filterContext.HttpContext.Response.SetCookie(
                    new HttpCookie(key, value)
                    {
                        Expires = value == null
                                ? DateTime.Now.AddMonths(-1)
                                : DateTime.Now.Add(Settings.MarketingInfoExpiration)
                    });
                    filterContext.HttpContext.Request.Cookies[key].Value = value;
                }
            }
        }

        private void SaveContactTrackingToCookie(ActionExecutingContext filterContext)
        {
            var paramNames = Enum.GetValues(typeof(ContactTrackingParams)).Cast<ContactTrackingParams>();
            var dic = paramNames.ToDictionary(a => a, a => filterContext.HttpContext.Request.QueryString[a.ToString()]);
            if (dic[ContactTrackingParams.vClickID] == null)
            {
                string str = dic[ContactTrackingParams.gclid];
                dic[ContactTrackingParams.vClickID] = str;
            }
            if (dic.Values.Any(a => !string.IsNullOrWhiteSpace(a)))
            {
                var data = dic.Where(a => !string.IsNullOrWhiteSpace(a.Value))
                    .ToDictionary(a => a.Key.ToString(), a => a.Value);
                var ser = new JavaScriptSerializer();
                var json = data.Any()
                    ? ser.Serialize(data)
                    : null;
                filterContext.HttpContext.Response.SetCookie(
                new HttpCookie(Main.MARKETING_CONTACT_TRACKING_COOKIE, json)
                {
                    Expires = json == null
                            ? DateTime.Now.AddMonths(-1)
                            : DateTime.Now.Add(Settings.MarketingContactTrackingExpiration)
                });
                filterContext.HttpContext.Request.Cookies[Main.MARKETING_CONTACT_TRACKING_COOKIE].Value = json;
            }
        }
    }

Недавно мы создали еще один поддомен, который размещен на linux с WordPress для целевых страниц, и у нас есть страница, например : https://lp3.cmtrading.com/ebook/?a=44004&subaffiliate=Facebook_Ebook&vvar1=sdkvmsdkv&vvar2=ndfvnsv

Как вы можете видеть здесь, это не сохраняет его для повара ie. Мой вопрос - может ли это быть связано с тем, что это не windows хостинг? или это не имеет к этому никакого отношения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...