我用VS2010建立ASP.NET 网站。有一个网页使用了GridView连接SQL数据库。在VS下调试可以通过。但是。。。

用IIS发布之后,网站可以进入。但是一但进入这个加入了GridView控件的网页就会出错。提示为:
异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\IUSR' 登录失败。
请高手指点

这个问题其实很简单,你的 SQL 连接字符串是 Windows 身份验证模式,改成 SQL 身份验证模式就可以了(“Data Source=...;Initial Catalog=...;User ID=...;Password=...”)。

错误原因的简述:
你在 VS 运行以及调试的时候,你的身份是 Administrators 组,因此连接 SQL Server 没有问题(默认情况下 MSSQL 允许 Administrators 组用户访问,而且为 SA 权限),而你发布到 IIS 后,出于安全考虑 IIS 可不是以“Administrators”组运行了,是以“IUSR_XXX”开始的账号运行,该账号 MSSQL 不认可,因此发生错误。
注1:IUSR_XXX 的 XXX 通常为机器名称,每台机子可能都不一样。
注2:报错所提及的用户“IUSR”,实际是指 IUSR_XXXXX 用户。
解决方法:
1)更改连接字符串为 SQL Server 身份验证方式(强烈推荐)
2)配置 IIS 站点,在“安全”设置里面设置以 Administrator 账号运行(不推荐)
3)配置 SQL Server 为 IUSR_XXX 授权登录,并允许访问数据库
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-12
一种原因是你的连接字符串有问题;第二种是数据库设置的问题。数据库是否运行远程访问
第一种可能性比较大
Data Source=连接数据库实例名称;Initial Catalog=数据库名;User ID=账号;Password=密码
可以把你的连接字符串贴出来更清楚解答你的问题追问

我在VS下是可以访问那个网页的,可是在IIS下访问都会出那个问题。连接字:
Data Source=.;Initial Catalog=bookshop;Integrated Security=True

Data Source=PC-20120402GZCM;Initial Catalog=bookshop;Integrated Security=True
我都用过了。在Vs下调试的访问都没有问题。只是IIS模式下就会出错。
不知道你有什么看法没有?

追答

连接字符串通过用户名密码访问一下,不要使用Integrated Security=True
'NT AUTHORITY\IUSR' 这个的权限不过 要重新配置一下你的IIS是不是在vs之后安装的?

第2个回答  2012-04-13
两种方法:
一:你的数据库连接字符串写的是用系统身份登录吧, 把 数据库连接字符串,改为 user id= xxxx;password=xx的形式 ;

二。 NT AUTHORITY\IUSR 是IIS应用程序池的用户标识, 你可以改为 本地系统(Local System),应该就可以了(前提是数据库设置了混合模式登录)
第3个回答  2012-04-14
是IIS配置错误。选择你发布站点的应用程序池,然后右键-高级设置-然后选择标识,会进入应用程序池标识界面-然后选择LocalSystem。这样就可以了。
第二种方式时,在你网站使用的数据库中,创建一个新用户,并且给予Dbowner的权限,然后在配置文件中用sql方式登录。追问

可是我的网站在VS下没有访问的问题呢?而且我在IIS下,使用SQL语句访问的数据库也没有问题。就是那个控件访问的有问题。
而且 高级设置里面也没有看到你说的那些呢?(右键-高级设置-然后选择标识,会进入应用程序池标识界面-然后选择LocalSystem)

追答

右边的滚动条往下,就能看到标识了。进程模型-标识。然后选择LocalSystem,不行的话,选择NetworkService。

追问

“验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。”

我找到你说的那个东西了,但是我几个选项我都试过了。都不行呢,上面是错误信息

第4个回答  2012-04-18
在SQL SERVER里把登录选项设为混合,写连接串时加上用户名密码。
在web.config文件中
<appSettings>
<add key="data" value="server=局域网中数据库服务器名;user id=sa;pwd=;initial catalog=数据库名"></add>
</appSettings>

用vs2022中的gridview控件连接sql数据库选择数
利用Sql控件配置数据源连接数据库。1、使用GridView控件绑定该数据源。2、添加计数器添加SQL的常用统计然后在下面列出的项目里面选择用户连接就可以时时查询到数据库的连接数了。

用的别人给的asp.net源程序,调试的时候提示警告:无法更新自动刷新引用...
在你的网站上右键--添加引用--项目,选择那个DLL文件,如果没有显示,就用旁边标签页的浏览,到你的程序包里找到那个DLL选中添加即可。“在选定的数据源上未找到名为“是否签收”的字段或属性。” 检查你的GridView属性中,选择BoundField有一个HeaderText属性,看下有没有这个表头。 本回答由提问者推荐 举报| 答案纠错...

asp.net 中gridview手动连接sqlsever数据库的时候出现“无法获得web...
链接字符串有问题,检查一下..data source=.\\\\sqlexpress;intrgrated security=true;database=数据库名

vs2010怎么连接sql2008
步骤如下:1、打开SQL Server,创建数据库(注意分配用户角色),再创建表(注意表名);2、打开VS,创建项目;3、添加新项:Linq to SQL类,创建并打开DataClasses.dbml;4、打开“服务器资源管理品”-->数据连接--》新建连接--》服务器输入“(local)”,输入角色用户名和密码,点接“连接”;5...

ASP.NET GridView如何判断
如果你sql查出来的数据只有1条的话,你的条件是不能做大于1的判断!要做大于等于1,或者大于0的判断!你可以做这样的判断,现在GridView已经绑定了。那么你就可以判断GridView 数据的行数 if (GridView1.Rows.Count > 0){ \/\/说明sql语句已经查出了一条数据!} ...

求大神,asp.net读取数据库内容后显示在顶部
你可以在页面上加一个GridView,然后查出来的数据变成一张datatable,SqlDataAdapater dpt = new SqlDataAdapter("select * from a_ckzl where ckbm=12", myConnection );DataTable datatable = new DataTable();dpt.Fill(datatable);然后 GridView.DataSource = datatable;GridView.DataBind();这样的...

求助:vs2010中使用DataList测试查询时对应数据都是空的?
GridView会自动绑定显示,DataList和Repeater控件必须要手动指定模板列绑定才行。<ItemTemplate> <%# Eval("字段")%> <\/ItemTemplate>

asp.net 关于浏览器弹出JS错误问题
gridview 中添加 NET 控件 在控件有事件发生的时候 gridview 会处理这个事件 会有一个回调过程 如果你只是打开一个连接 为何 不用 标签 而不是<asp:hyperlink> 如果你绑定东西可以用手写的呀 <a href="<%#Eval("title")%>"><%#Eval("title")%> 这样也可以绑定呀 不一定要用ASP的服务器控...

asp.net如何实现 打印gridview中的数据,打印之前要预览设置打印页面...
首先gridview中的数据一定是有数据源绑定 取数据不是从gridview中取,而是从数据源中取比较好。其次,C 貌似不能直接打印gridview中的东西,所以你可以先输出到excel中再打印。\/\/ printDocument1 为 打印控件 \/\/设置打印用的纸张 当设置为Custom的时候,可以自定义纸张的大小,还可以选择A4,A5等常用纸型 ...

C#中用ASP.net怎么来设计网页的页面
1、基于ASP.NET的应用程序设计,前台可以用VS工具直接做,就是往上拖控件,别嫌弃丑,你先把需要的按钮、放图片的位置、显示网页信息的位置等先拖控件上去,比如常用的Button、GridView、Image、Repeater等控件。这就是页面前台的布局,这种页面上就是广大用户能看到的、能操作的页面;比如百度首页的“百度...

相似回答