现象:
在本地开发一个asp.net2.0的应用程序时使用了Membership、Roles特性。创建了一些新用户,在vs2005环境下运行程序,用户可以登录成功;
然后把这个程序copy(或“生成网站”)到本地服务器上的其他目录,换在IIS下浏览,用户登录失败。提示错误:“尝试登陆失败,请重试”(Login attempt unsuccessful, please try again)原因:
查阅了一些文章,
错误的原因据说是web.config文件membership的applicationName属性(attribute)设置问题。(详细解释见以下两篇文章) 1.《在配置使用Membership或其他的Providers的ASP.NET2.0时一定要设置applicationName属性http://lovewangshu.cnblogs.com/archive/2006/04/24/383513.html
2. Always set the "applicationName" property when configuring ASP.NET 2.0 Membership and other Providers 问题:检查本机配置,未能解决,在IIS下浏览,用户登录仍然失败:
到底ApplicationName应该如何设置?能否给个具体例子?谢谢!本机配置如下:
1.ASPNETDB.MDF数据库ASPNET_Applications表的ApplicationName字段为"/"
2.应用程序下Web.Config未见对applicationname属性的设置。
3.machine.config:
<membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership><roleManager>
<providers>
<add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
在本地开发一个asp.net2.0的应用程序时使用了Membership、Roles特性。创建了一些新用户,在vs2005环境下运行程序,用户可以登录成功;
然后把这个程序copy(或“生成网站”)到本地服务器上的其他目录,换在IIS下浏览,用户登录失败。提示错误:“尝试登陆失败,请重试”(Login attempt unsuccessful, please try again)原因:
查阅了一些文章,
错误的原因据说是web.config文件membership的applicationName属性(attribute)设置问题。(详细解释见以下两篇文章) 1.《在配置使用Membership或其他的Providers的ASP.NET2.0时一定要设置applicationName属性http://lovewangshu.cnblogs.com/archive/2006/04/24/383513.html
2. Always set the "applicationName" property when configuring ASP.NET 2.0 Membership and other Providers 问题:检查本机配置,未能解决,在IIS下浏览,用户登录仍然失败:
到底ApplicationName应该如何设置?能否给个具体例子?谢谢!本机配置如下:
1.ASPNETDB.MDF数据库ASPNET_Applications表的ApplicationName字段为"/"
2.应用程序下Web.Config未见对applicationname属性的设置。
3.machine.config:
<membership>
<providers>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
</providers>
</membership><roleManager>
<providers>
<add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>
如果自己实现,就可以不要它了。
我就是自己实现的,不需要这个无聊的ApplicationName.
我的Web源程序放在D:\CatA目录下。网站发布到本地IIS,虚拟目录为localhost\CatB,对应的路径为c:\CatC。Web.config中的ApplicationName具体应该配为什么?我检查我的系统上只有manchine.config中有ApplicationName="/"的配置。
我用“生成网站”,编译生成另一文件系统网站,然后在IIS下建立一虚拟目录指向新生成的文件系统网站,用户可以成功登录了!!而之前我用“生成网站”直接生成IIS网站就不行,看来并不是ApplicationName的问题。但是,当我在Window server2003(原来是在XP)上做同样事情时,仍然有“登录尝试不成功”,怎么回事?
在一个虚拟主机中,多个应用可以共享此provider,所以为了避免冲突,所以你一定要设置。