簡體   English   中英

試圖為中信托開發一個失敗的原因?

[英]Is trying to develop for Medium Trust a lost cause?

我開始開發一個新的MVC應用程序,其中實體框架代碼優先,Unity用於依賴注入。 我使用EF5和Unity,因為我認為他們應該在Medium Trust中工作。 但是,當我在web.config <trust level="Medium" />拋出<trust level="Medium" />標記時,我開始獲得反射權限異常。

似乎每當我使用內置的東西(如System.Data.SqlClient ADO.net)時,我總是遇到中信任問題。 自動映射器:失敗。 NHibernate:失敗。 MySQL:失敗。 EF5代碼優先:失敗。 國際奧委會:失敗。

我只是在追逐夢想嗎? 是否有可能使用將在Medium Trust中運行的現代技術來實現構建良好且可測試的Web應用程序?

在虛擬機/虛擬服務器/雲計算時代(甚至一些將您的應用程序池設置為完全信任的共享主機),是否有人發現為中型信任開發值得付出努力?

ASP.NET團隊的官方立場是中信任已過時。 這意味着一些事情:

  • 我們會自動將報告給我們的所有與中信任相關的錯誤解析為“無法修復”。
  • 我們已經向托管商提供了指導,他們應該從Medium Trust遷移並使用適當的操作系統級隔離( http://support.microsoft.com/kb/2698981 )。
  • 我們正在從我們開發的框架(MVC,WebAPI,SignalR等)中刪除Medium Trust支持。 展望未來,基於這些框架構建的應用程序將需要完全信任。

這里,上面的術語“中等信任”是指ASP.NET中的所有非完全信任配置,包括使用內置信任級別(最小,低,中,高)或任何自定義信任級別。

編輯2015年5月26日: .NET Framework作為一個整體已棄用部分信任,建議客戶不要將其作為安全邊界。 來自MSDN

不應將.NET Framework中的代碼訪問安全性用作具有部分受信任代碼的安全邊界,尤其是源自未知的代碼。 我們建議不要在不采用其他安全措施的情況下加載和執行未知來源的代碼。

一般而言,需要深入反思的所有東西都不能在Medium Trust上運行

在你的情況下:

自動映射:使用反射來發現匹配的屬性和內存流來克隆它們(有一個版本,實際上在中等信任中有一些限制)

NHIbernate:使用反射發射來允許延遲加載,因為NH中的延遲加載是由代理實現的(為了避免這種情況,您可以禁用延遲加載或使用NHibernate ProxyGenerator,它是一個有助於預創建代理的實用程序)

Nhibernate ProxyGenerator

EF:實際上我沒有發現EF和中等信任的大問題....是不用序列或集合序列化對象

IoC:IoC是反射的殺手應用程序:)您可以嘗試使用適用於Medium Trust的AutoFac

AutoFac

一般來說,中等信任是一個很大的限制......但這一切都取決於你正在做什么樣的項目。 還要考慮使用像Arvixe這樣的一些完全信任托管

希望這可以幫助

暫無
暫無

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

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