在自己机器上装了个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);发布后却能正常浏览.
也就是说用第二种情况的方面使用数据库连接不上,为什么呢?

解决方案 »

  1.   

    'SHUHAOC\ASPNET' 没有权限操作GuestBook2数据库,打开sql2005express,对象管理器-安全性-登入名(把SHUHAOC\ASPNET添加进去),添加好了然后右键属性,在弹窗口里面--服务器角色-用户映射做相关操作就可以了.
      

  2.   

    http://zhidao.baidu.com/question/58262277.html
    看一下这个
      

  3.   

    3楼的可以,默认的aspnet账户没有那么大的权限
    如果机器安装SQL的话
    可以在web.config中配置
    connectionStrings> 
        <add name="Dataconnection" connectionString="server=.;user id=sa;password=sa;database=YourDatabaseName" providerName="System.Data.SqlClient"/> 
      </connectionStrings> 
      

  4.   

    String database_path = "server=服务器名;database=数据库名;User ID=登录用户名;Password=登录用户密码";
    SqlConnection con1 = new SqlConnection(database_path);