簡體   English   中英

.NET 4.0中級信任級別和MYSQL連接

[英].NET 4.0 Medium Trust Level and MYSQL connection

我有一個問題,我認為正確的答案將對很多有相同問題的人有所幫助,因為這是一個常見且未得到很好回答的問題。

問題是關於IIS中的“中等信任級別”配置。幾個月前,我在本地計算機上使用“完全信任級別”配置對網站進行了編碼,然后將其上傳到運行良好的主機。 但是我的托管公司對信任級別有新的規定,現在他們只允許“中等信任級別”。

我的網頁現在無法正常工作。我試圖改編我的網站,但我不知道該怎么做。而且可以肯定,很多人也不知道。所以我將告訴您到目前為止我做了什么,你能幫助我嗎?

首先,我嘗試通過此處更改本地配置,

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

並打開我的webconfig文件,然后進行更改

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

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

之后為了測試,我用ASP Default模板創建了一個新網站,它可以正常工作,然后我添加Mysql.dll作為連接到Mysql數據庫的引用,但是它在該堆棧中引發了安全異常:

[SecurityException:請求類型'System.Security.Permissions.SecurityPermission,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的權限失敗。] MySql.Data.MySqlClient.MySqlTrace..cctor()+ 0

所以現在怎么辦? 我們不能再連接到mysql數據庫了嗎? 還是有解決方案?我從未更改網站項目文件夾中的webconfig文件,是否需要在此處進行更改? 請幫幫我嗎?

大家好,我終於找到了解決問題的辦法,所以我將盡力幫助那些有相同問題的人。部分信任和中等信任級別是相同的。

我在這個問題上的第一步是絕對必要的。別忘了將您的信任級別更改為“中”。 之后,您需要從官方網站獲取正確的.Net連接器版本。請謹慎選擇托管服務提供商使用的版本。 例如我的托管公司正在使用Mysql Connector Net 6.5.4

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

您需要在<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>

有時,此步驟可能還不夠,您需要在“網站”下編輯web_mediumtrust.config

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" />

<NamedPermissionSets>
  <iPermission class = "MysqlClientPermission" version = "1">  
    <add connectionString = "Server =; Database =;"  restrictions = "User =; User Id =; Password =; Port =; Pooling =;" KeyRestrictionBehavior = "(Prevent Usage | Allow Only)" /> 
  </iPermission>

請注意所使用的版本,不要忘記根據此更改行。 如果仍然無法確定是否有一個非常有用的鏈接對您有用

部分信任下的信任級別

這是我嘗試通過使MySql在中等信任環境中工作來解決類似問題的方法。

我們嘗試了“書”中的所有內容,但根本無法使其正常工作!

原來MySql連接器版本是關鍵。 詢問您的Web托管公司,他們在GAC的服務器上安裝了哪個版本的MySqlClient

(GAC只是意味着該庫已安裝在服務器上,因此可以直接引用它,而無需將MySql.Data.dll上載到bin文件夾。最新的可安裝版本可在此處找到: http://dev.mysql .com / downloads / connector / net / )。

一旦將驅動程序安裝在GAC的服務器上,您只需要像這樣在web.config中引用它,但是用您的Web托管公司版本替換Version = 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> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM