当登录到另一个实例时,asp.net表单身份验证已注销

Dan*_*ell 3 asp.net forms-authentication

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

我们还使用角色和成员资格提供者

 <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">
Run Code Online (Sandbox Code Playgroud)

尽管我不确定这是否会成为问题,但我们也都使用了inProc会话状态。

谁能说出为什么发生这种情况以及如何解决呢?

Ari*_*tos 5

问题在于cookie,因为cookie保留记录的确认。

在web.config上更改Cookie的名称可能可以解决您的问题。因此,使用两个不同的Cookie后缀名称,根据两个不同的登录名来设置名称

<authentication mode="Forms">
 <forms ... name=".CookieSuffix" domain="yoururl.com" ... />
</authentication> 
Run Code Online (Sandbox Code Playgroud)