2014-04-07 13 views
6

Trong IIS-Manager, trang web mặc định bị ràng buộc trên cổng 80. Làm thế nào tôi có thể nhận được cổng theo tên trang web, sử dụng C#? Tôi đã thử các mã sau:Làm thế nào tôi có thể nhận được cổng theo tên trang web thông qua C# từ IIS?

var lWebsite = "Default Web Site"; 
var lServerManager = new ServerManager(); 
var lPort = lServerManager.Sites[lWebsite].Bindings.GetAttributeValue("Port"); 

lPort kết quả trong null với một ngoại lệ invalid index. Nhưng công việc phân bổ lPort = lServerManager.Sites[lWebsite] hoạt động.

+0

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 –

+0

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 –

+0

@Jayesh Goyani: bindingNode.Attribute ("Cổng") Giá trị cũng không hoạt động. – Simon

Trả lời

10

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.

Các vấn đề liên quan