試著在VS.NET 2003的工具箱(Toolbox)裡新增一個來自網路共享資料夾(Shared Folder)或網路磁碟機(Network Drive Mapped to a Shared Folder)的自訂控件(Custom Web Control)時,可能會發生了以下錯誤:

Insufficient state to deserialize the object. More information is needed.
要還原序列化物件狀態不足。 需要更多資訊。(中文版)

這個不知所云的序列化錯誤,真正的原因來自於.NET的安全管控機制。在預設的安全原則(Runtime Security Policy)中,來自網路分享的Managed Code,權限會受到限制。網路上找到的一些做法(這裡這裡)是將Local Intranet的安全等級直接調成FullTrust,省事歸省事,但一口氣對整個Intranet門戶大開似乎違背了"只對絕對必要範圍開放權限"的安全原則,等於認定只要跟你同一個LAN的都是好人,增加了不少被攻擊的風險。

我建議的做法是參考微軟的這篇KB,利用.NET 1.1組態工具,新增一個Code Group Policy,只針對這個放DLL的網路資料夾開放FullTrust權限。設定完成再重新啟動VS.NET 2003,就可以順利將自訂控件加入工具箱了。


Comments

Be the first to post a comment

Post a comment