none
哪位老师来帮忙解决一下!万分期待.用户登录时出错,VS配置创建的帐号和角色, RRS feed

  • 问题

  • VS2008+SQL2005
    用VS2008配置创建的账户和角色,Login控件登录的时候出错.
     App_Data文件夹的权限也修改过了.

     配置文件中修改过的地方如下
    ...
    <connectionStrings>
    <add name="LadderNetConnection" connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=Ladder;uid=Ladder;pwd=llljo8;pooling=true" providerName="System.Data.SqlClient"/>
     </connectionStrings>
    <location path="CatalogAdmin.aspx">
     <system.web>
    <authorization>
     <allow roles="Administrators"/>
    <deny roles="*"/>
     </authorization>
     </system.web>
     </location>
     <system.web>
     <roleManager enabled="true" />
     <compilation debug="true">
    <assemblies>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
     <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
     <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    </assemblies>
    </compilation>
    <customErrors defaultRedirect="~/Oooops.aspx" />
    <authentication mode="Forms">
    <forms name="LadderNetLogin" loginUrl="Login.aspx" path="/" protection="All" timeout="60">
     </forms>
     </authentication>
     ...

    错误详情: 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例。请确保该用户在此计算机上有本地用户配置文件。该连接将关闭。
    说明:
    执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

     异常详细信息:
    System.Data.SqlClient.SqlException: 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例。请确保该用户在此计算机上有本地用户配置文件。该连接将关闭。

    源错误:
     执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

     堆栈跟踪: [SqlException (0x80131904):

    System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4849015 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2394 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +35 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +144 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +342 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +221 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +189 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +4863459 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +31 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +433 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +499 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117 System.Data.SqlClient.SqlConnection.Open() +122 System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +87 System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +221 System.Web.Security.SqlMembershipProvider.GetPasswordWithFormat(String username, Boolean updateLastLoginActivityDate, Int32& status, String& password, Int32& passwordFormat, String& passwordSalt, Int32& failedPasswordAttemptCount, Int32& failedPasswordAnswerAttemptCount, Boolean& isApproved, DateTime& lastLoginDate, DateTime& lastActivityDate) +815 System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved, String& salt, Int32& passwordFormat) +105 System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved) +42 System.Web.Security.SqlMembershipProvider.ValidateUser(String username, String password) +78 System.Web.UI.WebControls.Login.AuthenticateUsingMembershipProvider(AuthenticateEventArgs e) +60 System.Web.UI.WebControls.Login.OnAuthenticate(AuthenticateEventArgs e) +119 System.Web.UI.WebControls.Login.AttemptLogin() +115 System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +101 System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37 System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +118 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +166 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565
    • 已编辑 daixi 2009年12月27日 4:14 重行
    2009年12月26日 15:32

答案

  • 非常感谢您的回答,问题依然没有解决,但是我发现了一个奇怪的问题,
    当我把整个网站从IIS7的目录下复制到非IIS7目录,然后从VS2008中按F5启动时,网站却一切正常.登录也没有问题.
    看来应该是我的IIS7没有配置好.
    谢谢您的回答.

    iis7---应用程序池---选择你的网站项目的程序池----高级设置-----标识-----选择ApplicationPoolIdentity  如果不行的话 选择其他的看看
    • 已标记为答案 daixi 2009年12月27日 6:51
    2009年12月27日 6:31

全部回复

  • 你没有配置好用户和角色链接数据库字符串 
    参考
      <membership defaultProvider="Membership">
                   <providers>
                          <add connectionStringName="blogsConnectionString" enablePasswordRetrieval="false"
                                 enablePasswordReset="true" requiresQuestionAndAnswer="true"
                                 applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed"
                                 maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7"
                                 minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
                                 passwordStrengthRegularExpression="" name="Membership"
                                 type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
                   </providers>
            </membership>
          <roleManager enabled="true" defaultProvider="SqlRole">
                   <providers>
                          <add connectionStringName="blogsConnectionString" applicationName="/"
                                 name="SqlRole" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
                   </providers>
            </roleManager>
    2009年12月26日 16:06
  • 试好多次了,还是不行,可能是我没有说清楚.
    我能上网站,其他功能都正常,但只要用户登录的话就出错.不管用什么帐号,对的错的,创建过的还是没创建的都出现同样的错误.
    用户账户不是保存在App_Data文件夹下吗?我把文件夹删了,然后重新配置web.config文件,重新生成数据库还是有问题.

    还有你那个例子我看得不太懂.<membership >是自定义的吗?应该放在哪个节点下?
    实在不好意思哦,我还是初学者,很多地方都不是很清楚,希望各位先辈们别嫌我烦.
    • 已编辑 daixi 2009年12月27日 4:18 补充
    2009年12月27日 4:13
  • 非常感谢您的回答,问题依然没有解决,但是我发现了一个奇怪的问题,
    当我把整个网站从IIS7的目录下复制到非IIS7目录,然后从VS2008中按F5启动时,网站却一切正常.登录也没有问题.
    看来应该是我的IIS7没有配置好.
    谢谢您的回答.
    2009年12月27日 6:12
  • 非常感谢您的回答,问题依然没有解决,但是我发现了一个奇怪的问题,
    当我把整个网站从IIS7的目录下复制到非IIS7目录,然后从VS2008中按F5启动时,网站却一切正常.登录也没有问题.
    看来应该是我的IIS7没有配置好.
    谢谢您的回答.

    iis7---应用程序池---选择你的网站项目的程序池----高级设置-----标识-----选择ApplicationPoolIdentity  如果不行的话 选择其他的看看
    • 已标记为答案 daixi 2009年12月27日 6:51
    2009年12月27日 6:31
  • 非常感谢您的回答,问题依然没有解决,但是我发现了一个奇怪的问题,
    当我把整个网站从IIS7的目录下复制到非IIS7目录,然后从VS2008中按F5启动时,网站却一切正常.登录也没有问题.
    看来应该是我的IIS7没有配置好.
    谢谢您的回答.

    iis7---应用程序池---选择你的网站项目的程序池----高级设置-----标识-----选择ApplicationPoolIdentity  如果不行的话 选择其他的看看

    非常感谢,将标识设置为本地系统后问题解决了.
    2009年12月27日 6:50
  • 非常感谢您的回答,问题依然没有解决,但是我发现了一个奇怪的问题,
    当我把整个网站从IIS7的目录下复制到非IIS7目录,然后从VS2008中按F5启动时,网站却一切正常.登录也没有问题.
    看来应该是我的IIS7没有配置好.
    谢谢您的回答.

    iis7---应用程序池---选择你的网站项目的程序池----高级设置-----标识-----选择ApplicationPoolIdentity  如果不行的话 选择其他的看看

    我还想问一下,我不能使用ApplicationPoolIdentity标识的原因可能是什么呢?能否解答一下,非常感谢.
    2009年12月27日 6:58
  • http://hi.baidu.com/derek_su/blog/item/e11100df5f4677d28c102932.html参考
    你的系统是win7 默认是这个选择吧 这个选项 我也不清楚 因为我也遇到这个问题 改一下就好了 因为我的数据库连接是本地模式 改成LocalSystem就可以了
    2009年12月27日 7:20
  • 不好意思,昨天后来有事去了一直没上,所以没有回答你的问题.谢谢你一直以来对我的帮助啊.真的学到了不少东西.
    2009年12月28日 4:25
  • mark
    我也遇到这样的问题,把 ApplicationPoolIdentity 改为 Network Service 就可以了
    2010年2月3日 1:54