Godaddy的WINDOWS主機,asp.net的信任模式為中等,如果是新站子站中使用檔案操作將會出現無許可權調用程式集的錯誤!相信很多朋友都曾嘗試過很多辦法,但結果非常令人失望,Godaddy不允許在Web.Config中修改信任模式,有的朋友將asp.net的版本設定為1.1,這樣就可以使用完全的信任模式。那我們的程式是.net2.0甚至是.net 4.0的怎麼辦呢?
以下我就會通過一個檔案上傳的例子來說明如何解決Goddady主機的無許可權調用程式集的解決辦法!
如果在子站中上傳檔案,就會提示沒有I/O操作的許可權,如:
AllowPartiallyTrustedCallersAttribute 特性允許部分分受信任的代碼調用某個程式集,該特性位於System.Security命名空間下。
只能用於程式集,只要我們為程式集添加該特性,那我們的代碼就能調用System.Security.Permissions.FileIOPermission程式集。
代碼如下:
using System.Reflection;
using System.Security;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有關程式集的常規資訊通過下列屬性集
// 控制。更改這些屬性值可修改
// 與程式集關聯的資訊。
[assembly: AllowPartiallyTrustedCallers]
[assembly: AssemblyCompany("OPSoft Inc.")]
[assembly: AssemblyProduct("OPSite.Web")]
[assembly: AssemblyCopyright("著作權 (C) www.ops.cc 2011")]
我們需要添加粗體部分到我們的程式集資訊檔中。現在我們可以再試試上傳功能,發現隱藏檔的時候:
Server.MapPath("~") 返回的路徑已經是根目錄了,那子站的檔案上傳到根目錄肯定沒有這個許可權的!
可以使用AppDomain.CurrentDomain.BaseDirectory 擷取當前程式集的目錄路徑。
這樣asp.net就可以完美的在goddady的子站中上傳檔案和I/O操作了!
文章由劉銘(奧博網路站長)撰寫,轉載請保留原文地址