繁体   English   中英

IIS ASP.NET网页中的SQL Server错误

[英]SQL Server error in IIS asp.net web page

今天是个好日子! 我遇到了一个问题,我发现我不是唯一拥有这种“异常” SQL Exception的人。 但是,我做了发现的所有事情,并得到了相同的结果。 所以,请让我介绍我的问题。

我一直在asp.net Web应用程序中工作。 在Visual Studio 2015(社区版本)中开发。 在我的项目中,我有一些到本地数据库的SQL连接(与项目在同一台计算机上)。 当我单击“调试”(使用我最喜欢的浏览器)时,一切进展顺利。 我可以进行查询(选择,插入,更新等)。 现在,我想在自己的Intranet中将其公开(我的cow缩者也希望与此应用程序一起工作)。 因此,我将项目文件夹移至

C:\\的Inetpub \\ wwwroot文件

是的,已经配置了IIS网站(我认为正确,我还有另一个Intranet应用程序运行良好!)

我的网页中的“默认”页面是Login.aspx,当我尝试使用正确的键(用户名和密码)进行访问时,SQL向我显示错误。

无效的登录尝试。 数据库问题.System.Data.SqlClient.SqlException(0x80131904):使用“ IIS APPPOOL \\ SADI”的本质错误。 zh-cn System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity身份,SqlConnectionString connectionOptions,SqlCredential凭据,对象providerInfo,字符串newPassword,SecureString newSecurePassword,布尔型redirectedUserInstance,SqlConnectionString userConnectionOptions,SessionData reconnectSessionData,DbConnectionFaultHandle,Enable,访问方法.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions选项,DbConnectionPoolKey poolKey,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection owningConnection,DbConnectionOptions userOptions) DbConnectionOptions userOptions)System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionIn ternal oldConnection)zh_cn System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject,DbConnectionOptions userOptions,DbConnectionInternal oldConnection)zh-CN System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,UInt32 waitForMultipleObjectsTimeout,Boolean allowCreate,布尔的OnlyCheckCheckOption, )System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject,TaskCompletionSource 1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection) en System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource DbConnectionInternal&connection)zh-CN System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection externalConnection,DbConnectionFactory connectionFactory,TaskCompletio 1 retry, DbConnectionOptions userOptions) en System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource 1重试)System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1重试)System.Data.SqlClient.SqlConnection.Open() zh-cn SADMIN.Login.btnLog_Click(对象发送方,EventArgs e)zh:C:\\ Users \\ MyUser \\ Documents \\ Visual Studio 2015 \\ Projects \\ MyProject \\ MyProject \\ Login.aspx.cs:line 43 ClientConnectionId:6cc4ef30-4720-4c45-ba87 -d85f39804685错误编号:18456,状态:1,类别:14 Enviar

如果您想知道...这是我的第43行:

conn.Open();

这是我在Login.aspx中的BackCode

  try
                 {

                     SqlConnection conn = new SqlConnection(@"Integrated Security=SSPI;Persist Security
 Info=False;User ID=sa;Initial Catalog=MyDatabase;Data
 Source=PCUsername\SQLInstance");
                     SqlCommand cmd = new SqlCommand();
                     SqlDataReader reader;

                     cmd.CommandText = "spcLoginValidate";
                    cmd.CommandType = CommandType.StoredProcedure;
                     cmd.Parameters.Add("@username", SqlDbType.VarChar).Value = txtusername.Text;
                     cmd.Parameters.Add("@passw", SqlDbType.VarChar).Value = txtpassword.Text;

                     cmd.Connection = conn;
                     conn.Open();

                     reader = cmd.ExecuteReader();
                     while (reader.Read())
                     {
                         idRole = Convert.ToInt32(reader[0].ToString());
                         Session["User"] = reader[1].ToString();
                         Session["ID"] = idRole;

                     }



                     reader.Close();
                     conn.Close();

                     lblError.Visible = true;
                 }
                 catch (Exception ex)
                 {
                     lblError.Text = "Invalid login attempt. Database issue." + ex;
                     lblError.Visible = true;

                 }

在Catch部分中,我有labelError和SQL Exception,在该标签中,我的网页向我显示了我之前给您的错误。

我的SQL Server服务正在运行,所以我不知道该怎么办! 你们的任何帮助都会很棒! 我已经尝试解决此问题3天了,现在仍然可以解决。

您需要授予IIS AppPool \\ SADI帐户对数据库的访问权限, 或者禁用集成安全性并为sa用户帐户添加密码。

创建SQL Server登录名和数据库用户: https : //technet.microsoft.com/zh-cn/library/aa337545(v= sql.110).aspx

错误是自我解释。 您的应用程序池帐户对SQL数据库没有足够的权限。

你可以:

  1. 将您的应用程序的标识更改为域帐户,并在数据库上为此帐户授予特权
  2. 将SQL身份验证更改为用户/密码并创建sql登录名(不过不建议这样做)

另外,请检查web.config文件中是否禁用了用户模拟(如果未禁用,则可能会导致此类问题)

好吧,经过4天的搜索有关此问题的信息。 而且仍然不知道原因。

毕竟,我找到了我需要的东西,从而解决了我的问题。 我只是在SQL Server的查询中运行了这句话(在我的数据库内部)

 exec sp_grantlogin 'IIS APPPOOL\DefaultAppPool'  
 use yourDB exec
 sp_grantdbaccess 'IIS APPPOOL\DefaultAppPool'

特别感谢Moho和Steve B,您的回答对于找到解决方案至关重要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM