Khi bạn truy cập Sites [lWebsite] .Bindings, bạn đang truy cập vào bộ sưu tập của các liên kết. Khi bạn cố gắng gọi GetAttributeValue ("Port"), nó không thành công vì nó không có ý nghĩa - chính bộ sưu tập không có số cổng liên kết với nó, nó chỉ là một bộ sưu tập.
Nếu bạn muốn nhận được quyền truy cập vào số cổng được sử dụng bởi mỗi ràng buộc, bạn cần phải lặp qua những cam kết ràng buộc và yêu cầu mỗi một cho số cổng liên quan:
var site = lServerManager.Sites[lWebsite];
foreach (var binding in site.Bindings)
{
int port = binding.EndPoint.Port;
// Now you have this binding's port, and can do whatever you want with it.
}
Nó có giá trị nổi bật thực tế rằng các trang web có thể bị ràng buộc với nhiều cổng. Bạn nói về việc có được cổng "", nhưng đó không nhất thiết phải là trường hợp - ví dụ: một trang web được phân phối trên cả HTTP và HTTPS sẽ có hai liên kết, thường là trên các cổng 80 và 443. Đó là lý do tại sao bạn phải xử lý bộ sưu tập của các ràng buộc, mặc dù trong trường hợp của bạn mà bộ sưu tập chỉ có thể chứa một ràng buộc, nó vẫn là một bộ sưu tập.
Để biết thêm chi tiết, hãy xem tài liệu MSDN cho the Binding class. Lưu ý rằng một số thứ bạn có thể quan tâm sẽ liên quan đến việc truy cập thuộc tính EndPoint của binding, như trong ví dụ trên.
Vui lòng kiểm tra liên kết bên dưới.http: //stackoverflow.com/questions/11616606/set-website-port-with-servermanager-class –
Một liên kết khác trong diễn đàn msdn. http://social.msdn.microsoft.com/Forums/vstudio/en-US/4d340847-25aa-47ee-aa43-b52c0565bfad/to-read-the-iis-default-website-port-number-c?forum= netfxbcl –
@Jayesh Goyani: bindingNode.Attribute ("Cổng") Giá trị cũng không hoạt động. – Simon