C# 如何在网站和虚拟应用程序之间维护.aspxauth会话cookie?

C# 如何在网站和虚拟应用程序之间维护.aspxauth会话cookie?,c#,web-config,forms-authentication,.aspxauth,C#,Web Config,Forms Authentication,.aspxauth,我们在.net中有我们的生产网站和第三方web应用程序,该应用程序作为虚拟应用程序从该网站运行。我的任务是维护网站和第三方应用程序之间的会话超时。i、 e.只要用户在第三方应用程序上处于活动状态,会话将保持活动状态,因此当用户返回网站时,即使在20分钟过期后,会话仍处于活动状态。我们在网站和应用程序中都使用表单身份验证进行会话管理,从我所读到的内容来看,我应该能够通过web配置中的设置来实现这一点。我已使用更新了两个webconfig文件的身份验证部分 基本上,我正在使用www.mydomain

我们在.net中有我们的生产网站和第三方web应用程序,该应用程序作为虚拟应用程序从该网站运行。我的任务是维护网站和第三方应用程序之间的会话超时。i、 e.只要用户在第三方应用程序上处于活动状态,会话将保持活动状态,因此当用户返回网站时,即使在20分钟过期后,会话仍处于活动状态。我们在网站和应用程序中都使用表单身份验证进行会话管理,从我所读到的内容来看,我应该能够通过web配置中的设置来实现这一点。我已使用更新了两个webconfig文件的身份验证部分

基本上,我正在使用www.mydomain.com和www.mydomain.com/app/

    <authentication mode="Forms">
        <forms
           name=".ASPXFORMSAUTH"
           loginUrl="home.aspx"
           enableCrossAppRedirects="true"
           slidingExpiration="true"
           path="/"
           domain=".infinedi.net">
        </forms>

    </authentication>
    <machineKey
          validationKey="BDEA0BE471E4E2C24E5A9552AF232C3E7BF584DBEEAA1262CEE78CB5126FBBBE9E8007DB5ED8357FEE5C2C5B6FF3FC7D34C7CEA54DE3790560FCDEBF44415804"
          decryptionKey="2E31C984223964655C203E3A91AF139B1AE0A964F1475E204E6AACE62840EAB0"
          validation="SHA1"
          decryption="AES"
          />


但这并没有奏效。当使用fiddler观看时,我可以看到,一旦进入第三方应用程序,我就会得到一个新的.ASPXFORMSAUTH会话,我怀疑这就是网站会话超时的原因。通过网络配置这样做是可能的,还是我应该朝着不同的方向走

无法使其工作,因此求助于使用iframe。丑陋的解决方案,我以后将不得不重新考虑

我认为您遇到的问题是因为ASP.NET为每个应用程序分配了一个新的会话ID。即使您具有相同的cookie名称和加密参数,内部生成的会话ID也会不同。您可以通过手动检测现有会话并更新会话ID来解决此问题。这曾经是基于flash的文件上载程序的常见解决方法,因为flash没有发送适当的Cookie,因此服务器端的上载处理程序无法识别用户的现有会话

使用上述URL中的示例代码,flash应用程序将发布到查询字符串中包含会话ID的URL,BeginRequest处理程序将检测并更新Request.Cookies集合。我还没有对此进行测试,但是您可以稍微修改代码,以检测父应用程序中的现有cookie


或者,请参见:

您将获得一个新会话,因为您在一个新网站上。如果您要返回原始网站并发送原始会话id,则在配置会话期间,您应该可以访问会话。此外,您的标题侧重于身份验证,但您的问题文本侧重于会话,您要实现的具体目标是什么?会话管理。更新了标题以使其更清晰。从我在网上发现的情况来看,我认为在webconfig表单标签中设置根域就是这样做的。你可能想看看上面的答案/评论。