我们的生产网站位于.net,第三方网络应用程序作为虚拟应用程序从网站运行。我的任务是维护网站和第三方应用之间的会话时间。即,只要用户在第三方应用程序上处于活动状态,会话就会保持活动状态,因此即使在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"
/>
但这并没有成功。当与小提琴手一起观看时,我可以看到,只要我进入第三方应用程序,我就会得到一个新的.ASPXFORMSAUTH会话,我怀疑这是网站会话超时的原因。是通过webconfig做到这一点甚至是可能的,还是我应该采取不同的方向?
答案 0 :(得分:0)
无法使用此功能,因此使用iframe。丑陋的解决方案,我将不得不重新审视。
答案 1 :(得分:0)
我认为您遇到的问题是因为ASP.NET为每个应用程序分配了一个新的会话ID。即使您具有相同的cookie名称和加密参数,内部生成的会话ID也将不同。您可以通过手动检测现有会话并更新会话ID来解决此问题。这曾经是基于闪存的文件上传者的常见工作,因为Flash没有发送适当的cookie,因此服务器端的上传处理程序无法识别用户的现有会话。
http://snipplr.com/view/15180/
使用上述URL中的示例代码,Flash应用程序将发布到包含查询字符串中的会话ID的URL,BeginRequest处理程序将检测该URL并更新Request.Cookies集合。我还没有对此进行测试,但您可以稍微修改代码以检测来自父应用程序的现有Cookie。
作为替代方案,请参阅:Sharing sessions across applications using the ASP.NET Session State Service