Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.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/6/asp.net-mvc-3/4.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# 使用WatiN使IE会话过期_C#_Asp.net Mvc 3_Internet Explorer_Watin_Session Cookies - Fatal编程技术网

C# 使用WatiN使IE会话过期

C# 使用WatiN使IE会话过期,c#,asp.net-mvc-3,internet-explorer,watin,session-cookies,C#,Asp.net Mvc 3,Internet Explorer,Watin,Session Cookies,我正在尝试使用WatiN编写一个验收测试,如果用户在会话超时后导航到某个页面,则检查该用户是否被重定向到登录页面。我正在使用WatiN的IE类作为浏览器,并尝试以下操作: // 1. Login // 2. Do this: Browser.ClearCookies(); Browser.ClearCache(); // 3. Navigate to a different page 但用户始终保持登录状态。其他资料: 我正在以管理员身份通过NUnit GUI运行测试 这是一个ASP.NE

我正在尝试使用WatiN编写一个验收测试,如果用户在会话超时后导航到某个页面,则检查该用户是否被重定向到登录页面。我正在使用WatiN的
IE
类作为浏览器,并尝试以下操作:

// 1. Login

// 2. Do this:
Browser.ClearCookies();
Browser.ClearCache();

// 3. Navigate to a different page
但用户始终保持登录状态。其他资料:

  • 我正在以管理员身份通过NUnit GUI运行测试
  • 这是一个ASP.NETMVC3站点,使用表单身份验证和进程内会话状态
  • 我用的是IE9
  • 如果我手动清除Chrome中的所有cookie,则用户将注销
  • 如果我手动清除IE中的所有cookie,用户将保持登录状态
  • 如果我调用
    Browser.Eval(“alert(document.cookie)”在IE中,它会提醒一个空字符串

  • 鉴于上述情况,我认为这是IE的一个怪癖;有没有办法解决这个问题?

    我四处看了看,发现了这个页面:


    本质上说,WaTiN无权删除IE中的Cookie,因此ClearCookie方法不起作用。我只是将您的身份验证cookie(我认为默认值是ASP.NET_SessionId)设置为空,看看是否有效。

    结果表明,这是由于IE处理会话的方式和删除身份验证cookie造成的;我发现,通过让WatiN执行以下JavaScript,可以清除IE中的身份验证信息:

    Browser.Eval(@"document.execCommand(""ClearAuthenticationCache"", false);");
    

    这管用!此行执行后,会话将被清除,下一页导航将重定向到登录屏幕。

    该页声明“使用ClearCookie进行的测试将失败”,但这不是我看到的。我正在以管理员的身份通过NUnit GUI运行测试,所以这可能解决了这个问题<代码>文档。cookie
    为空,手动清除IE浏览器中的cookie不会让我注销,因此我不确定这是否正确。这确实有效,但是,我们发现它可能会导致后续browser.Eval调用出现问题。在我们的测试中,代码:
    Browser.Eval(“1”)
    在清除缓存调用之前按预期返回“1”,但在相同的Eval请求之后返回“[object Document]”。只是要注意一下。谢谢你提醒我,亚伦!:)