vs2008里调试的时候没发现什么报错,但放到IIS之后,一运行,调到某个页面报如下错误。“/cms”应用程序中的服务器错误。
--------------------------------------------------------------------------------用户 'PC-201012011415\ASPNET' 登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 用户 'PC-201012011415\ASPNET' 登录失败。源错误:
行 35: else if (connection.State == System.Data.ConnectionState.Closed)
行 36: {
行 37: connection.Open();
行 38: }
行 39: else if (connection.State == System.Data.ConnectionState.Broken)
源文件: d:\My Documents\Visual Studio 2008\WebSites\CMS\App_Code\DBHelper.cs 行: 37 堆栈跟踪:
[SqlException (0x80131904): 用户 'PC-201012011415\ASPNET' 登录失败。]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4844759
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
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) +185
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
DBHelper.get_Connection() in d:\My Documents\Visual Studio 2008\WebSites\CMS\App_Code\DBHelper.cs:37
DBHelper.GetDataSet(String strSql, SqlParameter[] values) in d:\My Documents\Visual Studio 2008\WebSites\CMS\App_Code\DBHelper.cs:114
Pages.GetAllCount() in d:\My Documents\Visual Studio 2008\WebSites\CMS\Pages.aspx.cs:40
Pages.DisplaySource() in d:\My Documents\Visual Studio 2008\WebSites\CMS\Pages.aspx.cs:46
Pages.Page_Load(Object sender, EventArgs e) in d:\My Documents\Visual Studio 2008\WebSites\CMS\Pages.aspx.cs:27
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
--------------------------------------------------------------------------------用户 'PC-201012011415\ASPNET' 登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 用户 'PC-201012011415\ASPNET' 登录失败。源错误:
行 35: else if (connection.State == System.Data.ConnectionState.Closed)
行 36: {
行 37: connection.Open();
行 38: }
行 39: else if (connection.State == System.Data.ConnectionState.Broken)
源文件: d:\My Documents\Visual Studio 2008\WebSites\CMS\App_Code\DBHelper.cs 行: 37 堆栈跟踪:
[SqlException (0x80131904): 用户 'PC-201012011415\ASPNET' 登录失败。]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4844759
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
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) +185
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
DBHelper.get_Connection() in d:\My Documents\Visual Studio 2008\WebSites\CMS\App_Code\DBHelper.cs:37
DBHelper.GetDataSet(String strSql, SqlParameter[] values) in d:\My Documents\Visual Studio 2008\WebSites\CMS\App_Code\DBHelper.cs:114
Pages.GetAllCount() in d:\My Documents\Visual Studio 2008\WebSites\CMS\Pages.aspx.cs:40
Pages.DisplaySource() in d:\My Documents\Visual Studio 2008\WebSites\CMS\Pages.aspx.cs:46
Pages.Page_Load(Object sender, EventArgs e) in d:\My Documents\Visual Studio 2008\WebSites\CMS\Pages.aspx.cs:27
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627
不是数据库账户的问题就是权限的问题。
get
{
string connStr = "server=localhost;database=CMS;Integrated Security=SSPI;";
//解密 //connStr = DESEncrypt.Decrypt(connStr);
if (connection == null)
{
connection = new SqlConnection(connStr);
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Closed)
{
connection.Open();
}
else if (connection.State == System.Data.ConnectionState.Broken)
{
connection.Close();
connection.Open();
}
return connection;
}
有2种可能性:
一是楼上说的数据库连接字符串 写错了 ,这个就要楼主自己去检查下去了
还有种可能,应该与IIS的配置权限有关系,需要在IIS中,权限部分,将ASP对应用户的权限加入即可
在SQL Server中添加登录用户并给其相应数据库的权限
SQL Server Management Studio Express,
选择身份验证为“SQL Server和 Windows ”
数据库下->安全性>用户>用户名和密码是否正确
连接字符串
在SQL Server中添加登录用户并给其相应数据库的权限
SQL Server Management Studio Express,
选择身份验证为“SQL Server和 Windows ”
数据库下->安全性>用户>用户名和密码是否正确
连接字符串
源代码里用sql帐号登录 uid pwd
你用VS调试的时候是以Windows账户登录
你用IIS的时候以'PC-201012011415\ASPNET' PC名称\ASPNET登录
数据库认不出来给SQL SERVER中的相应数据库新建一个账户
然后使用用户名密码登录,不要用集成验证