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

用IIS发布之后,网站可以进入。但是一但进入这个加入了GridView控件的网页就会出错。提示为:异常详细信息:System.Data.SqlClient.SqlExce... 用IIS发布之后,网站可以进入。但是一但进入这个加入了GridView控件的网页就会出错。提示为:
异常详细信息: System.Data.SqlClient.SqlException: 用户 'NT AUTHORITY\IUSR' 登录失败。
请高手指点
展开
 我来答
明桖瑶gr
2012-04-16 · TA获得超过1205个赞
知道小有建树答主
回答量:397
采纳率:100%
帮助的人:615万
展开全部
这个问题其实很简单,你的 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 授权登录,并允许访问数据库
Ice海Man
2012-04-12 · TA获得超过302个赞
知道小有建树答主
回答量:203
采纳率:0%
帮助的人:203万
展开全部
一种原因是你的连接字符串有问题;第二种是数据库设置的问题。数据库是否运行远程访问
第一种可能性比较大
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之后安装的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jarhf
2012-04-13 · TA获得超过1862个赞
知道小有建树答主
回答量:1736
采纳率:25%
帮助的人:1020万
展开全部
两种方法:
一:你的数据库连接字符串写的是用系统身份登录吧, 把 数据库连接字符串,改为 user id= xxxx;password=xx的形式 ;

二。 NT AUTHORITY\IUSR 是IIS应用程序池的用户标识, 你可以改为 本地系统(Local System),应该就可以了(前提是数据库设置了混合模式登录)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
予恋寻十1K
2012-04-14 · TA获得超过941个赞
知道小有建树答主
回答量:977
采纳率:50%
帮助的人:846万
展开全部
是IIS配置错误。选择你发布站点的应用程序池,然后右键-高级设置-然后选择标识,会进入应用程序池标识界面-然后选择LocalSystem。这样就可以了。
第二种方式时,在你网站使用的数据库中,创建一个新用户,并且给予Dbowner的权限,然后在配置文件中用sql方式登录。
更多追问追答
追问
可是我的网站在VS下没有访问的问题呢?而且我在IIS下,使用SQL语句访问的数据库也没有问题。就是那个控件访问的有问题。
而且 高级设置里面也没有看到你说的那些呢?(右键-高级设置-然后选择标识,会进入应用程序池标识界面-然后选择LocalSystem)
追答
右边的滚动条往下,就能看到标识了。进程模型-标识。然后选择LocalSystem,不行的话,选择NetworkService。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
禽妄祝7
2012-04-18
知道答主
回答量:16
采纳率:0%
帮助的人:18.7万
展开全部
在SQL SERVER里把登录选项设为混合,写连接串时加上用户名密码。
在web.config文件中
<appSettings>
<add key="data" value="server=局域网中数据库服务器名;user id=sa;pwd=;initial catalog=数据库名"></add>
</appSettings>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(12)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式