1

一个 ASP.NET 应用程序(实际上是使用 Silverlight,但没关系)作为文件夹主页托管在 Outlook 中。在这个应用程序中有一个打开弹出窗口的链接,它打开一个单独的 IE 窗口,而不是在 Outlook 中。

问题是,在这种情况下,似乎 ASP.NET 会话丢失了。对 ASP.NET 服务的调用在 Session 和 Session._id 中没有任何内容。我怀疑 Outlook 的 cookie 与 IE 不同。

从 Outlook 打开 IE 弹出窗口时如何保留会话?也许以某种方式通过 URL 传递会话 ID,或者在 web.config 中配置它?

请注意,我不想要无 cookie 会话。

4

2 回答 2

0

我会尝试在 Outlook 的 url 中传递用户的 ASP.NET_SessionId cookie 的值,然后在 IE 中打开的页面上检查 url 上的值,并在加载页面之前在响应中复制 ASP.NET_SessionId cookie(也许在为请求加载会话之前的 IHttpModule 中)。

如果 ASP.NET 有一些内置的会话劫持安全性会阻止您以某种方式手动复制会话 cookie,我不能 100% 肯定这会起作用,但这就是我要开始的地方。

于 2010-04-28T15:57:11.497 回答
0

我过去遇到过这个问题,但由于 Outlook 中的浏览器在完全不同的进程下运行,而且它甚至不是典型的 IE 环境,因此我一直无法找到解决方法。如果我记得的话,我也遇到了通过身份验证的问题。

当直接在 IE 中执行相同的行为时,它实际上会使用相同的会话打开另一个窗口。

要在 IE 中重新创建 Outlook 中发生的进程,只需打开一个 IE 窗口并转到您的应用程序。然后通过单击快捷方式(不是从当前 IE 会话中生成)打开一个新的 IE 窗口,并将链接复制并粘贴到地址栏中。这基本上就是 Outlook 正在做的事情。

于 2010-04-28T15:27:21.843 回答