527
Chương 13: Bảo mật
Console.WriteLine(x.Current.ToString());
}
}
}
Tất cả các lớp chứng cứ chuẩn do .NET Framework cấp đều bất biến, bạn không thể thay đổi
các giá trị của chúng sau khi bộ thực thi đã tạo ra rồi gán chúng cho assembly. Ngoài ra, bạn
không thể thêm hay loại bỏ các item trong lúc đang liệt kê một tập hợp bằng
IEnumerator
, nếu
không, phương thức
MoveNext
sẽ ném ngoại lệ
System.InvalidOperationException
.
10.
10.
X lý ch ng c khi n p m t assembly
ử
ứ
ứ
ạ ộ
X lý ch ng c khi n p m t assembly
ử
ứ
ứ
ạ ộ
Bạn cần xử lý chứng cứ khi nạp một assembly để tác động đến các quyền mà bộ
thực thi cấp cho assembly.
Tạo các đối tượng chứng cứ mà bạn muốn gán cho assembly, sau đó thêm chúng
vào một thể hiện của lớp
System.Security.Policy.Evidence
, rồi truyền tập hợp
Evidence
cho phương thức dùng để nạp assembly.
Chứng cứ (được chiếm hữu bởi một assembly) định nghĩa định danh (identity) của assembly
và xác định bộ thực thi cấp các quyền nào cho assembly. Bộ nạp assembly (Assembly Loader)
chịu trách nhiệm chính trong việc xác định gán chứng cứ gì cho một assembly, nhưng một
host đáng tin cậy (như ASP.NET hay Internet Explorer runtime host) cũng có thể gán chứng
cứ cho một assembly. Mã lệnh của bạn có thể gán chứng cứ khi nạp một assembly nếu mã
lệnh này có phần tử
ControlEvidence
của
SecurityPermission
.
Nếu bạn nạp một assembly vào một miền ứng dụng hai lần nhưng gán chứng cứ
khác vào assembly này mỗi lần như thế, bộ thực thi sẽ ném ngoại lệ
System.IO.FileLoadException
.
Có nhiều phương thức thực hiện việc gán chứng cứ khi nạp một assembly. Một đặc điểm mà
tất cả các phương thức này thường có là nhận một tập hợp
Evidence
làm đối số—lớp
Evidence
là một bộ chứa cho các đối tượng chứng cứ. Bạn phải đặt từng đối tượng chứng cứ mà bạn
muốn gán cho assembly vào một tập hợp
Evidence
và truyền nó cho phương thức nạp
assembly. Nếu bạn gán chứng cứ mới xung đột với chứng cứ được gán bởi bộ nạp assembly,
chứng cứ mới sẽ thay thế chứng cứ cũ. Bảng 13-2 liệt kê các lớp và các phương thức của
chúng trực tiếp hay gián tiếp nạp một assembly. Mỗi phương thức cung cấp một hay nhiều
phiên bản nạp chồng chấp nhận một tập hợp
Evidence
.
Bảng 13.2 Các lớp và các phương thức của chúng cho phép bạn gán chứng cứ cho một assembly
Lớp/Phương thức
Mô tả
Lớp
System.Activator
Các phương thức này ảnh hưởng đến miền ứng dụng
hiện hành.
CreateInstance
CreateInstanceFrom
Tạo một kiểu trong miền ứng dụng hiện hành từ
assembly được chỉ định.