Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在IE中重定向到操作后会话被清除?_C#_Asp.net Mvc - Fatal编程技术网

C# 在IE中重定向到操作后会话被清除?

C# 在IE中重定向到操作后会话被清除?,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个系统,它包含许多内置于ASP.net MVC中的表单,设计用于通过iframe跨多个第三方网站使用。每个第三方网站都分配了一个唯一的URL,例如 http://iframedomain.com/iframe/f9a14f53-0528-4ad1-b451-8895360e57e4 控制器检查Guid是否有效,以及是否有指定给它的自定义css文件的路径。如果存在,则此自定义css存储在会话变量中-css文件都位于iframe所在域的内容/样式内的子文件夹中。然后用户被重定向到正确的表单

我有一个系统,它包含许多内置于ASP.net MVC中的表单,设计用于通过iframe跨多个第三方网站使用。每个第三方网站都分配了一个唯一的URL,例如

http://iframedomain.com/iframe/f9a14f53-0528-4ad1-b451-8895360e57e4
控制器检查Guid是否有效,以及是否有指定给它的自定义css文件的路径。如果存在,则此自定义css存储在会话变量中-css文件都位于iframe所在域的内容/样式内的子文件夹中。然后用户被重定向到正确的表单

每个表单控制器都继承自一个公共控制器,其中有一个对OnActionExecuting的重写,该重写将自定义css传递到VIewBag中:

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (Session["iFrameCSS"] != null)
        {
            ViewBag.iFrameCSS = Session["iFrameCSS"];
        }

        if (Session["JQueryTheme"] != null)
        {
            ViewBag.JQueryTheme = Session["JQueryTheme"];
        }

        base.OnActionExecuting(filterContext);
    }
然后,布局文件检查并导入正确的CSS文件:

@if (ViewBag.iFrameCSS != null)
{
    string cssFile = ViewBag.iFrameCSS.ToString();
    if (cssFile.StartsWith("http", StringComparison.CurrentCultureIgnoreCase))
    {
        <link rel="stylesheet" href="@cssFile" type="text/css" media="screen, projection" />
    }
    else
    {
        <link rel="stylesheet" href="@Url.Content("~/Content/style/" + cssFile + ".css")" type="text/css" media="screen, projection" />
    }
}
else
{
    <link rel="stylesheet" href="no-custom-css-file.css" type="text/css" media="screen, projection" />
}
@if(ViewBag.iFrameCSS!=null)
{
字符串cssFile=ViewBag.iFrameCSS.ToString();
if(cssFile.StartsWith(“http”,StringComparison.CurrentCultureIgnoreCase))
{
}
其他的
{
}
}
其他的
{
}

除了IE(在7/8/9中测试)没有css文件的链接并且使用了默认css文件之外,所有浏览器都可以使用此功能。我在本地进行了调试,在IE中看到了不同的结果,其中会话工作正常,并且ViewBag变量肯定已设置,但这在live server上根本不起作用。我看不出这里出了什么问题?我在4台不同的机器上进行了测试(4个不同的人,设置非常不同,结果都是一样的)

也许这是跨域会话cookie的问题。设置P3P头应该可以解决这个问题。关于P3P还有很多问题


如果iframe位于不同于父域的域中,则它们是第三方cookie,并且在Internet Explorer和Safari中默认设置它们有一些限制


宏通过使用无Cookie会话解决了他的问题。

也许这是跨域会话Cookie的问题。设置P3P头应该可以解决这个问题。关于P3P还有很多问题


如果iframe位于不同于父域的域中,则它们是第三方cookie,并且在Internet Explorer和Safari中默认设置它们有一些限制


宏通过使用无Cookie会话解决了他的问题。

也许这是跨域会话Cookie的问题。设置P3P头应该可以解决这个问题。关于SO上的P3P有很多问题。所有会话/cookie都将来自同一个域(iFrame域),因此这不意味着它们都是第一方吗?如果iFrame与父域不同,它们是第三方cookie,在InternetExplorer和Safari中默认设置它们有一些限制。先生,你真是个天才。当我使用iFrame时,我不关心凌乱的URL,所以只需在我的web.config的sessionstate中设置cookieless=true,一切就开始工作了。奇怪的是,它的工作速度似乎也快了很多?如果您能将此作为一个答案发布,我将很高兴地为YouCookie增光。在这个解决方案中,无Cookie会话是个好主意,+1:)也许这是跨域会话Cookie的一个问题。设置P3P头应该可以解决这个问题。关于SO上的P3P有很多问题。所有会话/cookie都将来自同一个域(iFrame域),因此这不意味着它们都是第一方吗?如果iFrame与父域不同,它们是第三方cookie,在InternetExplorer和Safari中默认设置它们有一些限制。先生,你真是个天才。当我使用iFrame时,我不关心凌乱的URL,所以只需在我的web.config的sessionstate中设置cookieless=true,一切就开始工作了。奇怪的是,它的工作速度似乎也快了很多?如果您能将此作为一个答案发布,我将很高兴地向您推荐无Cookie会话在这个解决方案中是个好主意,+1:)