關於Linux和Windows下部署mysql.data.dll的註冊問題
mysql ado.net connector下載地址:
http://dev.mysql.com/downloads/connector/net/
選擇版本:
Generally Available Releases(1)是釋出版(bug什麼的較少的版本吧),而Development Releases(2)是開發版
我們採用1版本
Windows (x86, 32-bit), MSI Installer
該版本是window下的安裝版,如果你安裝了這個版本的話,在本機除錯的時候可以不用再次註冊MySql.Data.MySqlClient,vs會找到dbprovider為此的dll,
如果重複註冊會報錯
建立 system.data 的配置節處理程式時出錯: 列“InvariantName”被約束為是唯一的。值“MySql.Data.MySqlClient”已存在。
如下圖 :
.Net & Mono (Architecture Independent), ZIP Archive
如果是這個版本的話,那麼你需要手動註冊下dll,否則除錯的時候或者部署到Linux伺服器上的時候MySql.Data.dll是無法被載入的,所以要手工註冊下程式碼如下
<system.data> <DbProviderFactories> <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version=6.9.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/> </DbProviderFactories> </system.data>
對於
type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version=6.9.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
這段根據自己的版本改變:C:\Windows\Assembly
注意了:這樣就會在windows下除錯的時候報重複註冊的錯了。
我糾結了:在群友熬夜後如頭像的幫助下解決了
在註冊前先移除,上面web.config的配置改變為
<system.data> <DbProviderFactories> <remove invariant="MySql.Data.MySqlClient"></remove>//先移除,接下來註冊 <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version=6.9.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/> </DbProviderFactories> </system.data>
ok,解決了,多謝熬夜後如頭像的幫助。我也記錄此問題來幫助以後遇到這個問題的朋友。