7

Đây là mã tạo hiệu suất truy cập:PerformanceCounter.NextValue() throws InvalidOperationException

var ftpPerfCounter = new PerformanceCounter("FTP Service", "Current Connections", "_Total"); 

Đây là nơi các ngoại lệ xảy ra:

int cnt = (int)Math.Round(ftpPerfCounter.NextValue()); 

Đây là Exception nhắn:

"Thông báo lỗi: Bố cục bộ đếm cho Danh mục được chỉ định không hợp lệ, bộ đếm loại: AverageCount64, AverageTimer32, CounterMultiTimer, CounterMultiTimerInverse, CounterMultiTimer100Ns, CounterMultiTimer100NsInverse, RawFraction, hoặc SampleFraction phải được theo ngay bởi bất kỳ loại bộ đếm cơ sở nào: AverageBase, CounterMultiBase, RawBase hoặc SampleBase. "

Thông báo lỗi khá khó hiểu. Tôi không chắc chắn những gì có thể được thực hiện để tránh ngoại lệ trong tương lai.

Chi tiết

Điều này xảy ra trên Windows Server 2008 R2 64-bit OS. Máy chủ FTP là IIS.

Trả lời

1

Tôi không có IIS được cài đặt trên máy tính của tôi, nhưng nếu tôi đã làm, đây là những gì tôi muốn thử:

  1. Cố gắng sử dụng máy phát điện mã Visual Studio cho WMI bằng cách kéo-và-thả từ Trình khám phá máy chủ. Kiểm tra mã được tạo và xem liệu có bất kỳ sự khác biệt nào với mã của bạn hay không.
  2. Sử dụng bộ phản xạ để xem vị trí ngoại lệ được ném, đặt điểm ngắt tùy chỉnh bên trong BCL và tái tạo. Sau đó phân tích nội dung ngăn xếp cuộc gọi và tìm kiếm các đường dẫn mã đáng ngờ hoặc trạng thái không mong muốn.
0

Dường như họ đã giải quyết được sự cố tương tự here. Có lẽ bạn phải thiết lập một truy cập cơ sở?

2

Ít nhất trên Windows Server 2008 R2 với IIS 7.5, loại bộ đếm hiệu năng được gọi là "Dịch vụ Microsoft FTP" không phải là "Dịch vụ FTP". Có lẽ nó khác nhau cho các phiên bản OS/IIS khác nhau, nhưng nó dễ dàng kiểm tra.

Trên máy chủ mục tiêu của bạn/máy:

  1. Run "Performance Monitor"
  2. Bấm "Performance Monitor trong panel điều hướng bên trái
  3. Nhấp vào biểu tượng dấu cộng để thêm một bộ đếm hiệu suất
  4. Scroll Tìm kiếm FTP hoặc Microsoft FTP để xem nó có tồn tại hay không ... lưu ý nếu bạn chưa cài đặt các dịch vụ Microsoft FTP, bạn sẽ không thấy bộ đếm hiệu suất. tìm thấy, chọn nó và bạn sẽ thấy danh sách các trường hợp truy cập cụ thể mà bạn có thể truy vấn. Một trong những trường hợp đó là '_Total' mà bạn quan tâm.

Tất nhiên điều này cũng chứng minh rằng bộ đếm hiệu suất hoạt động độc lập với mã của bạn. Đó là một điều tốt để biết!

Để biết các phương pháp hay nhất cụ thể về cách làm việc với Performance Counters in C#/.NET see this stackoverflow post.

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