我正在使用VS 2010在我的本地计算机上进行一些开发并在Cassini中运行我的开发代码,我也获取了相同代码的副本并将其部署到c:\ mp并在IIS7中设置一个Web应用程序指向到这个目录。
两个应用程序都指向不同的数据库。我通过http://localhost/mp
访问IIS当我登录其中任何一个时,如果我已经登录,则导致我从另一个登出。
我觉得这与我们正在使用的表单身份验证有关,可能会覆盖cookie但我还没有找到任何有用的东西。
表单身份验证设置如下所示
<authentication mode="Forms">
<forms name="MP" loginUrl="~/login.aspx" protection="All" timeout="20" path="/" slidingExpiration="true" cookieless="UseCookies" defaultUrl="~/Modules/Enquirer/Default.aspx" />
</authentication>
我们也在使用角色和会员提供者
<roleManager enabled="true" cacheRolesInCookie="true" defaultProvider="AspNetSqlRoleProvider">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" connectionStringName="mpconnectionstring" applicationName="mp" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
<membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="20" hashAlgorithmType="SHA1">
我们也在使用inProc会话状态,虽然我不确定这是否会成为一个问题。
任何人都可以建议为什么会发生这种情况以及如何解决这个问题?
答案 0 :(得分:4)
问题在于cookie,因为cookie保留了记录的确认。
在web.config上更改cookie的名称可能会解决您的问题。因此,请根据两个不同的登录信息使用2个不同的Cookie后缀名称设置名称和域。
<authentication mode="Forms">
<forms ... name=".CookieSuffix" domain="yoururl.com" ... />
</authentication>
答案 1 :(得分:1)
您需要在web.config中明确设置某些cookie的名称。以下是一些通常需要的:
1)身份验证cookie
<authentication mode="Forms">
<forms name=".ASPXAUTH_YourAppName" ...
2)角色管理员cookie
<roleManager cacheRolesInCookie="true" cookieName=".ASPXROLES_YourAppName" ..
3)会话状态cookie
<sessionState cookieName="ASP.NET_SessionId_YourAppName" ...
我为不同的应用程序添加了默认cookie名称的唯一后缀。例如在上面,将“YourAppName”替换为您的不同应用实例的唯一内容。