ASP.NET中操作SQL数据库(连接字符串的配置及获取)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET中操作SQL数据库(连接字符串的配置及获取)相关的知识,希望对你有一定的参考价值。

参考技术A

  在WebConfig中配置数据库连接字符串 代码如下

复制代码 代码如下: <connectionStrings> <add name=ConnectionString connectionString="user id=用户名;password=密码;initial catalog=数据库名称;data source=服务器名称"/> </connectionStrings>

   然后在Webform_ aspx cs里面获取连接字符串 要添加如下引用

复制代码 代码如下: using System Configuration; using System Data; using System Data SqlClient; 复制代码 代码如下: SqlConnection con; protected void Page_Load(object sender EventArgs e) ConnectDB(); private void ConnectDB() string ConString = ConfigurationManager ConnectionStrings["ConnectionString"] ConnectionString; con = new SqlConnection(ConString); con Open(); SqlCommand = new SqlCommand(); SqlDataReader sdr; string sqlstr = "select * from item"; CommandText = sqlstr; Connection = con; sdr = ExecuteReader(); while (sdr Read()) Response Write(sdr["字段名"] ToString()+"</br>"); sdr Close(); sdr = null; lishixinzhi/Article/program/net/201311/14106

使用受信任连接时,哪个帐户用于向 SQL 验证 ASP.net?

【中文标题】使用受信任连接时,哪个帐户用于向 SQL 验证 ASP.net?【英文标题】:Which account is used to authenticate ASP.net to SQL when using a trusted connection? 【发布时间】:2014-09-04 11:38:26 【问题描述】:

我正在尝试在我们的 IIS 服务器上正确配置 asp.net 4.5。

我已经能够成功导航并启动一个不包含数据连接的 ASPX 页面,因此我知道本地目录的应用程序池身份验证正常工作。

现在虽然我有一个单独的 SQL 服务器连接到域,并且在代码中存储了一个连接字符串,该连接字符串使用受信任的连接将 ASPX 页面连接到服务器。在 Visual Studio 调试模式下运行时,连接工作正常 - 但此时我假设它正在使用我的登录凭据。

我的问题是,当用户在新的 IIS7 服务器上托管时通过浏览器调用 aspx 页面时,使用可信连接时使用哪个帐户调用 SQL 服务器? - 是最终用户还是来自 IIS 服务器的本地帐户?

当我调用嵌入了数据连接的页面时,我收到错误:用户 ADMIN\PCNAME$ 登录失败 ... 这表明这是它正在使用的帐户。但是,我知道的域上不存在此帐户。 - 是吗?!

提前致谢,

【问题讨论】:

【参考方案1】:

它将使用运行 ASP.NET 的帐户,正如您所设计的那样。您通常应该做的是创建一个域帐户(具有正确的权限)并在该帐户下运行您的 ASP.NET AppPool。然后受信任的连接将使用该帐户连接到数据库,并且只要您授予它访问权限(作为域帐户您可以这样做),它应该一切正常。

添加:

在 cmet 上来回折腾之后,让我们回到开始:设置新的 AppPool 使用域用户帐户运行,并回收 AppPool。什么是说密码错误?如果是 IIS 尝试启动 AppPool,那么极有可能是您为 AppPool 提供的密码错误,或者密码设置为在首次登录时更改。 如果它不是 IIS,而是打开一个数据库连接,你确定数据库允许这个域帐户访问数据库和它需要的表吗?您为该帐户分配了哪些角色?另外,它试图执行什么 SQL 语句(如果它已经足够远,可以尝试执行一条语句)?

我建议您在最初的问题中做出任何回应 - 如果 cmets 太多,它们就会成为拖累。

【讨论】:

嗨,谢谢,这是有道理的。从那时起,我尝试做两件事 - 首先更改应用程序池,以便它使用我们配置的服务帐户的特定凭据,以访问 SQL 服务器,并使用我也可以访问的凭据。不过,我似乎无法应用更改,并且每次我收到错误提示密码无效时: serverfault.com/questions/421658/… 但不幸的是,该线程没有解决方案! ...您以前见过这个问题吗? 您是否在使用模拟?检查 web.config 文件。 遵循此处的建议:forums.iis.net/t/1180450.aspx 我尝试将我的凭据添加到本地管理员组 - 这现在允许数据库页面在本地主机上正确加载,但是如果我尝试从另一台机器,然后我收到“Internet Explorer 无法显示页面”错误。我认为这是因为匿名身份验证仍设置为使用应用程序池帐户,所以我也将其更改为我的凭据......但它仍然不会加载。据我所知 - 不使用模拟。 - 感觉就像我接近了! 这也很奇怪:第一个网站(默认)可以通过远程 PC 的 IP 地址访问。如果我输入 10.200.38.123:8080 (第二个网站的地址) - 它不起作用。查看匿名身份验证设置,第一个使用 ISUR,第二个使用应用程序池标识(从我的凭据更改回来),...切换到使用 ISUR 意味着页面也停止在本地主机上工作。莫名其妙!

以上是关于ASP.NET中操作SQL数据库(连接字符串的配置及获取)的主要内容,如果未能解决你的问题,请参考以下文章

asp.net网站怎么连接Mysql数据库。我的asp.net网站可以访问了,Mysql数据库也有帐号和密码。

ASP.NET连接数据库(SQL Server)的操作

ASP.Net 模拟将连接字符串传递给 SQL Server 数据库

asp.net连接sql数据库的连接字符串怎么写啊?

ASP.NET 应用程序连接字符串和 SQL Server 安全/权限

ASP.NET MVC 4 EF6 无法连接到 SQL Server Express 数据库