ASP.NET Web Service 链接数据库问题

水晶圣教士 2008-10-24 09:33:25
我在Microsoft Visual Studio 2005创建了一个ASP.NET Web Service,用来读取数据库和一个Flex进行通信,现在问题主要是出在Web Service链接数据库上。
原来使用的连接字符串:"Data Source=.;Initial Catalog=Company;Persist Security Info=True;User ID=sa;Password=sa";时,老是链接不上,在网上查了资料修改也没有结果,
昨天换成连接字符串:"Data Source=.;Initial Catalog=Company;Integrated Security=True";
在Microsoft Visual Studio 2005中调试,在出现的Service测试页中“调用”可以正确显示,也就是调试环境下能正确执行,并且使用Flex也得到了正确的结果;
但是通过设置IIS,然后使用IE去调用就显示如下错误,链接不上了。
如果正确链接的话应该应该显示xml代码。
现在不知道怎么哪里出了问题,望高手指教,谢谢^_^
---------使用新链接字符串IE直接调用下的错误代码--------
System.Data.SqlClient.SqlException: 无法打开登录所请求的数据库 "Company"。登录失败。
用户 'WZD\ASPNET' 登录失败。
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
在 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)
在 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
在 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
在 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
在 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
在 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
在 System.Data.SqlClient.SqlConnection.Open()
在 Service.GetData()
-----------------
...全文
149 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
还有就是发布的时候直接发布到IIS上,别发布成文件夹再设置IIS。
  • 打赏
  • 举报
回复
在IIS里添加个ASP.NET身份的用户,不添加就不行。。
7707 2008-10-28
  • 打赏
  • 举报
回复
同意6楼.

你要用sa的话,用以下串
server=[server];uid=[sa];password=[sa];database=[]
水晶圣教士 2008-10-28
  • 打赏
  • 举报
回复
昨天晚上回去电脑上研究了下,问题终于解决了,虽然和大家说的方法都没关系,但是还是要谢谢回帖的各位,谢谢^_^

解决过程如下:
在后来出错的代码中我发现个问题,我不管是使用用户名登录或者是Sa登录,他并没有显示说用户Sa登录失败或我的本地用户登录失败,而是用户 'WZD\ASPNET' 登录失败,就算我没有使用用户名而是使用MS推荐的"Integrated

Security=SSPI",结果也是一样,因为我登录Windows时用的用户名就不是'WZD\ASPNET' ,我想计算机为什么要用'WZD\ASPNET' 来进行登录呢?
启动SQL Server 2005,连接后进入,在数据库中找到我要连接的这个数据库,单击右键“属性”-“文件”,在“所有者”右边单击按钮打开“选择数据库所有者”对话框,单击“浏览”按钮,找到'WZD\ASPNET' 对象,选中后确定,把

我要连接的这个数据库文件的所有权给'WZD\ASPNET' ,确定后,关闭SQL Server Management Studio,只有尝试用IE直接连接就能够正常调用数据库文件了,使用Flex也能独处数据了。至此,问题解决。
但是,虽然问题是解决了,这个问题的发生,主要是SQL 2005授权的授权问题,应该是牵扯到SQL 2005的安全性方面吧,SQL 2000如果出现这样的问题好像解决的方法不太一样,实际上到现在我还是不明白,为什么系统要

用'WZD\ASPNET' 去连接数据库,而不是用我的用户名或者是Sa去连接?

---错误提示代码---
System.Data.SqlClient.SqlException: 无法打开登录所请求的数据库 "Company"。登录失败。
用户 'WZD\ASPNET' 登录失败。

---题外话---ASPNET用户---
我先是了解下,'WZD\ASPNET' 应该是安装相关软件的时候自动创建的一个用户(具体也不确定说明时候安装的了,可能是.NET Framework或者是Microsoft Visual Studio),用户的描述是“Account used for running the ASP.NET

worker process (aspnet_wp.exe)”,后来无意中在“我的电脑”-“属性”-“高级”-“用户配置文件”“存储在本机上的配置文件”中看到了'WZD\ASPNET',和我的本地用户名都在里面,虽然文件没有我的本地用户大,也就是里面的

配置信息相对少,不过这确定是系统自己创建的用来进行ASPNET的运行或者调试用的吧。
cranejuan 2008-10-27
  • 打赏
  • 举报
回复
使用Windows身份登录模式的話,是不需要User ID=sa;Password=sa這個的,問題肯定出在這里
水晶圣教士 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mengxj85 的回复:]
Data Source=.;Initial Catalog=Company;User ID=sa;Password=sa;改成这样吧,或许真是用户名跟密码错误
[/Quote]
改成你这样,就来调试环境下也出不来了^_^
mengxj85 2008-10-25
  • 打赏
  • 举报
回复
Data Source=.;Initial Catalog=Company;User ID=sa;Password=sa;改成这样吧,或许真是用户名跟密码错误
水晶圣教士 2008-10-25
  • 打赏
  • 举报
回复
我用的是SQL Server 2005,使用Windows身份登录模式,Sa已经启用,我本地用户名和密码,Sa用户名和密码都用过,结果一样!

前面的“脚本资源访问”、“读取”、“写入”、“目录浏览”、“记录访问”、“索引资源”我都已经打上勾了。“执行权限设为”:脚本和可执行文件;文档中添加了启用默认文档“Service.asmx”;结果一样。

我以前一直在使用这个IIS,都没改过设置,做的ASP.NET和ASP的网页都能正常使用的啊!我想应该和IIS没有关系。

我想是不是因为Visual Studio 2005中,IDE已经帮助连接了数据库,而IE调用的时候由于连接的字符串不对,所有连接不上,那么在使用Windows身份认证模式的情况下,应该怎么样来改写我原来的连接字符串呢?
编程有钱人了 2008-10-25
  • 打赏
  • 举报
回复
flex3.0 如果是和.net一起使用的话
一般用的是WebServer或是httpserver

连接数据库的方法和就是其自身的方法
LZ好好检查系你的连接字符串有没有问题?
carkiller 2008-10-24
  • 打赏
  • 举报
回复
检查
1,连接数据库的用户名密码是不是sa?
2,什么数据库呢?如果是连SQL2005的时候检查连接字符串。
3,调试可以,在IIS里不可以,看看IIS的设置里面权限啊什么的~

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧