HOW TO:為先行編譯的網站簽署組件
更新:2007 年 11 月
您可以數位簽署 ASP.NET 編譯工具 (Aspnet_compiler.exe) 所產生的組件,以便協助改善 Web 應用程式的安全性。使用強式名稱 (Strong Name) 簽署組件可讓攻擊者難以將惡意程式碼引入您的應用程式中。如需使用簽署組件之優點的詳細資訊,請參閱強式名稱的組件。
每當您使用 -keyfile 或 -keycontainer 參數簽署組件時,您也必須使用 -aptca 參數,指定 AllowPartiallyTrustedCallersAttribute 屬性 (Attribute) 要套用至組件。如果您並未指定 -aptca 參數,您的組件就無法由 ASP.NET 處理序呼叫,而且 Aspnet_compiler.exe 會擲回例外狀況。
這個主題中的程序會使用強式名稱的金鑰組和 Aspnet_compiler.exe 的參數。如需此工具的相關詳細資訊,請參閱 ASP.NET 編譯工具 (Aspnet_compiler.exe)。如需強式名稱金鑰組的詳細資訊,請參閱建立和使用強式名稱的組件。
如需先行編譯的詳細資訊,請參閱 ASP.NET 網站先行編譯。
若要為先行編譯的網站簽署組件
請建立強式名稱的金鑰組或金鑰容器 (Container)。如需建立強式名稱金鑰的詳細資訊,請參閱 HOW TO:建立公開/私密金鑰組。
開啟命令視窗並巡覽至包含 .NET Framework 的資料夾。
.NET Framework 會安裝在下列位置。
%windir%\Microsoft.NET\Framework\version
在命令提示字元上輸入下列命令,執行 aspnet_compiler 命令。
aspnet_compiler -v virtualPathtargetPath -keyfile keyFile.snk -aptca
virtualPath 參數表示網站的 Internet Information Services (IIS) 虛擬路徑,targetPath 參數表示已編譯網站之目錄的實體路徑,keyFile.snk 表示金鑰檔的名稱。
如果您要使用金鑰容器,請在命令提示字元中輸入下列命令。
aspnet_compiler -v virtualPathtargetPath -keycontainer keyContainer.snk -atpca
如果您的網站不是 IIS 應用程式,則因此在 IIS Metabase 中沒有項目,請在命令提示字元中輸入下列命令。
aspnet_compiler -p physicalOrRelativePath -v / targetPath -keyfile keyFile.snk -aptca
在這種情況下,physicalOrRelativePath 參數會參考網站檔案所在位置的完整目錄路徑,或是目前目錄的相對路徑。physicalOrRelativePath 參數中可以使用句點 (.) 運算子。-v 參數會指定編譯器用來解析應用程式根目錄參考的根目錄 (例如,使用波狀符號 (~) 運算子)。當您指定 -v 參數的值為 / 時,編譯器將會使用實體路徑當做根目錄來解析路徑。
如果您要使用金鑰容器,請在命令提示字元中輸入下列命令。
aspnet_compiler -p physicalOrRelativePath -v / targetPath -keycontainer keyContainer.snk -aptca
targetPath 參數是目的目錄的實體路徑。