直接要求查看
public class AddressController : Controller { [MvcSiteMapNode(Title = "Addresses",ParentKey = "MyAccount",Key = "Addresses")] public ActionResult Index() { .... var memberId = GetKeyValues.GetMemberId(); // This works perfect. ... }
Ajax调用
$.ajax({ url: "/Address/CheckPrimaryAddressGood?t="+ Math.random(),type: "Get",success: function(data) { ... public class AddressController : Controller { public ActionResult CheckPrimaryAddressGood() { ... var memberId = GetKeyValues.GetMemberId(); ... } } public static class GetKeyValues { public static string GetMemberId() { if (HttpContext.Current.Session[keyCookie] != null) { memberId = GetMemberIdFromSession(); } else if (HttpContext.Current.Request.Cookies["token"] != null) { memberId = GetMemberIdFromCookie(); } } }
来自AJAX的电话我丢失了cookies值IE9.我试过P3P重写仍然没有工作从这个帖子P3P link
有人有类似的问题吗?请让我知道如何解决这个问题.我已经在这一天度过了一天.
编辑
我只是在Fiddler中追踪IE不发送头数据,它只是发送“Connection = Keep-Alive& Pragma = no-cache& Accept = * / *& Accept-Encoding = gzip,deflate& Accept-Language = en-US& ; Host = ebiz.company.com:28712&User-Agent = Mozilla / 5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident / 5.0)& Origin = http://ebiz.spe.org:28712}
但是Chrome:{Connection = keep-alive& Accept = * / *& Accept-Encoding = gzip,deflate,sdch& Accept-Language = en-US,en; q = 0.8& Cookie = ASP.NET_SessionId = 2a4tr1ymierclqsfxyfahqbc; __session:0.5654769616667181:showwarning = TRUE; __session:0.5654769616667181:BadAddressWarning = FALSE; ….
为什么?
解决方法
其他一些问题有类似的问题,这似乎并不完全符合您的要求(尤其是您尝试过P3P).还有很多在互联网上的帖子,一切都在几个问题上.
No Session Cookies on Internet Explorer 9 AJAX requests
Cookie blocked/not saved in IFRAME in Internet Explorer
一些想法:
>一个答案在url的下划线有问题.你没有
那么,但是你可以尝试一个没有随机参数的干净的?只是
以防万一不喜欢.
>许多关于麻烦这样做的帖子
从一个iframe.如果你没有iframe,这不是
问题.
> P3P,你说你试过了我看到一个评论标题
必须在每个请求上设置,而不仅仅是寻找
会议/饼干.
>跨域/ CORS问题?看起来不像
与你的根相对的url.
>尝试在另一台电脑上使用IE9?愚蠢,
但也许这是您的浏览器的一些晦涩的设置;区域等
fiddler是否在您网站上浏览的常规页面显示会话ID? (只是为了确保它不是站点范围而不是这个ajax调用).
>我通常发布ajax而不是Get(只是有很多数据),并做
有会话工作.这也避免了需要缓存清除功能
随机参数.
>我使用好的旧Web表单而不是mvc,并发布到asmx.上
asmx方法,我需要装饰服务器端的方法.
// ScriptService and ScriptMethod are required for the jquery.ajax() call. They weren't required for jquery.post(). WebMethod needed for session. [WebMethod(EnableSession = true)] [ScriptMethod] public string DoSomething() ...