2013-08-19 31 views
2

我有一個問題,我認爲正確的答案將幫助很多由具有相同problem.Because它是一種常見並不能很好回答問題的人。.NET 4.0中的信任等級和MYSQL連接

的問題是關於IIS.A「中等信任級別」配置幾個月前,我編寫我的網站我的本地機器上的「完全信任級別」的配置,當我上傳到主機這是工作的罰款。 但我的託管公司有關於信任級別的新規則,現在他們只允許「中等信任級別」。

我的網頁現在不工作,我試着去適應我的網站,但我不知道該怎麼做。那肯定很多人都不知道。 所以我會告訴我什麼到目前爲止,你能幫助我嗎?

首先,我試圖去這裏改變了我的本地配置,

C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Config中

,打開我的webconfig文件,和改變

<trust level="Full" originUrl="" /> 

<trust level="Medium" originUrl="" /> 

之後只是爲了測試我創建了一個新網站,ASP默認template.It是working.Then我添加MYSQL.DLL作爲參考連接到MySQL database.But它扔安全例外與堆棧:

[拋出:SecurityException:請求類型的許可 'System.Security.Permissions.SecurityPermission,mscorlib程序, 版本= 4.0.0.0,文化=中性公鑰= b77a5c561934e089' 失敗] MySql.Data.MySqlClient.MySqlTrace .. cctor()+0

那麼現在呢?我們不能連接到MySQL數據庫了嗎?或者有沒有解決方案?我從來沒有改變我的webconfig文件在網站項目文件夾我需要改變一些東西嗎? 請幫幫我吧?

回答

1

大家好我finnally找到解決我的問題,所以我會盡力幫助其中具有相同problem.Partial信任和中等信任級別的人都是一樣的東西。注意這一點。

我在這個問題的第一步是絕對necessary.Don't忘記改變你的信任級別爲「中」。之後,您需要正確.Net連接器版本從 The Oficial Website 請小心選擇您的託管服務提供商使用的版本。例如我的Hosting公司正在使用Mysql Connector Net 6.5.4

其次,您需要配置您的項目webconfig文件,該文件將使用您的.dll文件並在中等信任級別下獲得必要的權限。

您需要在您的<configuration>下添加如下內容;

<mscorlib> 
    <security> 
     <policy> 
     <PolicyLevel version="1"> 
      <SecurityClasses> 
      <SecurityClass Name="MySqlClientPermission" Description="MySql.Data.MySqlClient.MySqlClientPermission, MySql.Data, Version=6.6.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/> 
      </SecurityClasses> 
     </PolicyLevel> 
     </policy> 
    </security> 
    </mscorlib> 

如果你的系統不加它會自動在你的<system.web>你需要添加;

<assemblies> 
    <add assembly="MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/> 
    <add assembly="MySql.Data.Entity, Version=6.5.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/> 
    <add assembly="MySql.Web, Version=6.5.4.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/> 
    </assemblies> 

有時候這種步驟可能是不夠的,你需要根據

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config 

您需要下

<SecurityClasses> 
    <securityclass Name="MySqlClientPermission" Description="MySql.Data.MySqlClient.MySqlClientPermission, MySql.Data, Version=6.5.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> 

添加此行編輯您的web_mediumtrust.config
<NamedPermissionSets> 
    <iPermission class = "MysqlClientPermission" version = "1"> 
    <add connectionString = "Server =; Database =;" restrictions = "User =; User Id =; Password =; Port =; Pooling =;" KeyRestrictionBehavior = "(Prevent Usage | Allow Only)" /> 
    </iPermission> 

be c areful關於正在使用版本,不要忘記根據該改線路。如果你仍然不能明白這一點有一個非常有用的鏈接,您

Trust Level Under the Partial Trust

0

這是我如何解決了類似的問題,試圖讓MySQL在中等信任的環境中工作。

我們嘗試了一切'書',根本無法得到它的工作!

原來MySQL的連接器版本是關鍵。 問你的網絡託管公司,他們在GAC安裝在他們的服務器上了MySqlClient的是什麼版本。

(GAC只是意味着該庫是安裝在服務器上,以便它可以直接和參考,您無需上傳MySql.Data.dll到您的bin文件夾的最新安裝版本可以在這裏找到:http://dev.mysql.com/downloads/connector/net/) 。

一旦驅動程序安裝在GAC你只需要引用它在你的web.config這樣的服務器上,但替代版本= 6.6.5.0與您的網絡託管公司版本:

<compilation debug="true" targetFramework="4.0"> 
    <assemblies> 
    <add assembly="MySql.Data, Version=6.6.5.0, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/> 
    </assemblies>  
</compilation>