關於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,解決了,多謝熬夜后如頭像的幫助。我也記錄此問題來幫助以后遇到這個問題的朋友。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM