在自己机器上装了个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);发布后却能正常浏览.
也就是说用第二种情况的方面使用数据库连接不上,为什么呢?
看一下这个
如果机器安装SQL的话
可以在web.config中配置
connectionStrings>
<add name="Dataconnection" connectionString="server=.;user id=sa;password=sa;database=YourDatabaseName" providerName="System.Data.SqlClient"/>
</connectionStrings>
SqlConnection con1 = new SqlConnection(database_path);