求教一个连接数据库的问题

shuhaoc 2009-01-17 03:57:50

在自己机器上装了个IIS5.1,学了一下用法.用VS2005发布网站时出现一个问题.
1.如果页面中没有使用数据库,运行正常,也就是说用浏览器可以看到网页.
2.如果页面中使用数据库,
用下面这种连接方式


SqlConnection conn = new SqlConnection(
@"server=(local)\SQLEXPRESS;database=GuestBook2;Trusted_Connection=True");

数据库mdf文件是位于SQL Server安装目录下的那种(不知如何称呼这种做法),
在vs2005里调试是没问题的,但发布到IIS就出错,信息如下:



//------------------------------出错信息--------------------------------------------


“/test”应用程序中的服务器错误。
--------------------------------------------------------------------------------

无法打开登录所请求的数据库 "GuestBook2"。登录失败。
用户 'SHUHAOC\ASPNET' 登录失败。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Data.SqlClient.SqlException: 无法打开登录所请求的数据库 "GuestBook2"。登录失败。
用户 'SHUHAOC\ASPNET' 登录失败。

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

堆栈跟踪:


[SqlException (0x80131904): 无法打开登录所请求的数据库 "GuestBook2"。登录失败。
用户 'SHUHAOC\ASPNET' 登录失败。]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +734867
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +188
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +1838
System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +33
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +628
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +170
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +359
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +28
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +424
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +496
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +82
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +105
System.Data.SqlClient.SqlConnection.Open() +111
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +121
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +137
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +86
_Default.SetBind() +89
_Default.Page_Load(Object sender, EventArgs e) +25
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +47
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061




--------------------------------------------------------------------------------
版本信息: Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42
//---------------------------------------------------------------------------------------------------


3.如果数据库是附加在App_Data文件夹中的,
连接方式:
<!--web.config中添加-->

<connectionStrings>
<add name="Dataconnection" connectionString="Data Source=.\SQLExpress;Integrated Security=True;User Instance=True;AttachDBFilename=|DataDirectory|Database.mdf" providerName="System.Data.SqlClient"/>
</connectionStrings>
然后


SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Dataconnection"].ConnectionString);

发布后却能正常浏览.


也就是说用第二种情况的方面使用数据库连接不上,为什么呢?
...全文
141 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
dslei_1984 2009-01-19
  • 打赏
  • 举报
回复
同上!
zpxfzp 2009-01-19
  • 打赏
  • 举报
回复
String database_path = "server=服务器名;database=数据库名;User ID=登录用户名;Password=登录用户密码";
SqlConnection con1 = new SqlConnection(database_path);
Teng_s2000 2009-01-19
  • 打赏
  • 举报
回复
3楼的可以,默认的aspnet账户没有那么大的权限
如果机器安装SQL的话
可以在web.config中配置
connectionStrings>
<add name="Dataconnection" connectionString="server=.;user id=sa;password=sa;database=YourDatabaseName" providerName="System.Data.SqlClient"/>
</connectionStrings>
jiang_jiajia10 2009-01-19
  • 打赏
  • 举报
回复
wq610612 2009-01-19
  • 打赏
  • 举报
回复
配置下webconfig就可以了
net_xiaojian 2009-01-18
  • 打赏
  • 举报
回复
'SHUHAOC\ASPNET' 没有权限操作GuestBook2数据库,打开sql2005express,

对象管理器-安全性-登入名(把SHUHAOC\ASPNET添加进去),添加好了然后右键属性,在弹窗口里面--服务器角色-用户映射做相关操作就可以了.
shuhaoc 2009-01-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 winner2050 的回复:]
登录验证失败而已。
[/Quote]

回1楼:如何处理呢?
winner2050 2009-01-17
  • 打赏
  • 举报
回复
登录验证失败而已。

62,268

社区成员

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

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

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

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