close
最近在測試ASP .NET 2.0網站登入管理相關的控制項,因為不是用SQL Server 2005的Express版本,所以一開頭就碰了個大釘子,找了不少網站查資料,再加上自己的測試,整理出以下的幾個方法:
 
方法一:直接修改machine.config(爛方法不要用,除非你以後都不再寫其他網站應用程式)
  檔案路徑在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config,修改<connectionStrings>區段,改成自己的資料庫連線字串定義。
 
<connectionStrings>
  <add name="LocalSqlServer" connectionString="data source=127.0.0.1;Integrated Security=SSPI;Initial Catalog=aspnetdb;" providerName="System.Data.SqlClient" />
</connectionStrings>
  
方法二:所有網站應用程式共用同一個apsnetdb(SQL Server 2000也適用)
  如果機器上裝的不是Express版,或是資料庫不在本機上,就要先在Visual Studio 2005 命令提示字元執行aspnet_regsql.exe,aspnet_regsql會在SQL SERVER上建立一個aspnetdb資料庫,接著將Web.Config中的<connectionStrings>區段,改成自己的資料庫連線字串定義。
  <connectionStrings>
   <remove name="LocalSqlServer" />
 <add name="LocalSqlServer" connectionString="data source=127.0.0.1;Integrated Security=SSPI;Initial Catalog=aspnetdb;" providerName="System.Data.SqlClient" />
  </connectionStrings>
 
  但是因為在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\machine.config中
<membership>、<profile>、<roleManager>三個區段內的applicationName attrib都設定為"\",所以如果不修改就直接使用,多個網站的member、role及profile資料都會混在一起,除非自行在web.config加入以下這些設定,並設定applicationName attrib(字很小,看到了嗎?我設為applicationName="WebSite1" )
<membership>
 <providers>
  <remove name="AspNetSqlMembershipProvider" />
  <add name="AspNetSqlMembershipProvider"
   type="System.Web.Security.SqlMembershipProvider"
   connectionStringName="LocalSqlServer"
   enablePasswordRetrieval="false"
   enablePasswordReset="true"
   requiresQuestionAndAnswer="true"
   applicationName="WebSite1"
   requiresUniqueEmail="false"
   passwordFormat="Hashed"
   maxInvalidPasswordAttempts="5"
   minRequiredPasswordLength="7"
   minRequiredNonalphanumericCharacters="1"
   passwordAttemptWindow="10"
   passwordStrengthRegularExpression="" />
 </providers>
</membership>  
  
<profile>
 <providers>
  <remove name="AspNetSqlProfileProvider" />
  <add name="AspNetSqlProfileProvider"
   connectionStringName="LocalSqlServer"
   applicationName="WebSite1"
   type="System.Web.Profile.SqlProfileProvider" />
 </providers>
</profile>
<roleManager enabled="true">
 <providers>
  <remove name="AspNetSqlRoleProvider" />
  <remove name="AspNetWindowsTokenRoleProvider" />
  <add name="AspNetSqlRoleProvider"
   connectionStringName="LocalSqlServer"
   applicationName="WebSite1"
   type="System.Web.Security.SqlRoleProvider" />
  <add name="AspNetWindowsTokenRoleProvider"
   applicationName="WebSite1"
   type="System.Web.Security.WindowsTokenRoleProvider" />
 </providers>
</roleManager>
  
方法三:每個網站應用程式都用自己的apsnetdb(僅適用於SQL Server 2005)
當您裝了非Express版的SQL SERVER 2005,但卻想像Express版一樣,將資料直接存在程式路徑下App_Data資料夾中的aspnetdb.mdf,
可以這樣作:
1.執行aspnet_regsql.exe在SQL SERVER上建立一個aspnetdb資料庫
2.進入SQL Server Management Studio,將aspnetdb卸離
3.copy C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\aspnetdb.mdf及aspnetdb.ldf到程式路徑下的App_Data資料夾
4.修改web.config的<connectionStrings>區段
<connectionStrings>
 <remove name="LocalSqlServer" />
 <add name="LocalSqlServer"
  connectionString="data source=.;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;"
  providerName="System.Data.SqlClient" />
</connectionStrings>
 
方法四:換Express版吧!
  我用Express版試過,就真的很簡單!什麼問題也沒有,直接會幫您將aspnetdb開在程式路徑下的App_Data資料夾中。
arrow
arrow
    全站熱搜

    paul0407 發表在 痞客邦 留言(0) 人氣()