[英].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.