2012-10-24 22 views
5

Đây là kịch bản mà tôi đang gặp phải: Tôi đang sử dụng MiniProfiler để lược tả một số thao tác. Nhưng nó thiếu một chức năng cụ thể mà tôi sẽ phải sử dụng. Có một tập tin cài đặt MiniProfiler có thể cho phép tôi thực hiện một số cấu hình giống như những gì cần xem xét cho hồ sơ và những gì không, suy nghĩ như chậm và không, vv Nhưng đây là những cài đặt chung và áp dụng cho tất cả các hoạt động được lược tả. Những gì tôi cần là để có thể nói điều gì đó như thế này:Ngưỡng thời gian cho mỗi hoạt động sử dụng mvc mini profiler

using (mvcminiprofiler.Step("OperationName", 1200) 
{ 
    //some C# code 
} 

Lập luận này '1200' thể hiện rằng, hoạt động này dự kiến ​​sẽ mất 1.200 ms và không lưu kết quả của nó đến cơ sở dữ liệu nếu phải mất bất cứ điều gì ít hơn hoặc bằng 1200 ms. Nhưng nếu mất hơn 1200 ms thì lưu thời gian phản hồi này vào cơ sở dữ liệu. Vì vậy, tôi về cơ bản nói về mỗi giá trị ngưỡng hoạt động.

Tôi sẵn sàng viết một trình bao bọc xung quanh MiniProfiler cho việc này nhưng tôi không sẵn sàng thay đổi mã nguồn của hồ sơ nhỏ. Trên thực tế, chúng tôi đã xây dựng một khung nhỏ xung quanh hồ sơ nhỏ nhưng chúng tôi không muốn thay đổi mã nguồn của nó. Nhưng chỉ đơn thuần mở rộng chức năng của nó theo một số cách.

+0

Điều này là khó khăn, bạn sẽ cần phải lưu thông tin này vào IStorage một số cách, sẽ yêu cầu Jarrod để có một cái nhìn –

+0

Xin vui lòng :) Nó có ý nghĩa bởi vì một số hoạt động mà chúng tôi muốn hồ sơ và không ảnh hưởng đến các trang web trong thời gian thực có thể có một số lượng lớn thời gian. Vì vậy, nó có ý nghĩa để có thời gian ngưỡng hoạt động ngoài các ngưỡng toàn cầu. Cảm ơn! –

+0

Thay vì ghi đè lên '.Step()', thay vào đó 'StepIf ("Operation", 1200) 'là gì? –

Trả lời

2

Tôi chỉ cần thêm các phương pháp khuyến nông mới sau đây để MiniProfiler, có sẵn trong nuget 3.0.10-beta5 và cao hơn:

  1. MiniProfiler.StepIf(string name decimal minSaveMs, bool includeChildren = false)
  2. MiniProfiler.CustomTimingIf(string category, string commandString, deciml minSaveMs, string executeType = null)

Bạn sẽ có thể sử dụng chúng để làm chính xác những gì bạn đang tìm kiếm để làm. Trong trường hợp của bạn, bạn sẽ sử dụng mã như thế này:

using (MiniProfiler.Current.StepIf("Operation Name", 1200)) { 
    // do your stuff 
} 

Bạn có thể sử dụng includeChildren (mặc định là false) để thiết lập hay không sử dụng thời gian ghi trong hồ sơ con khi xác định có hay không để tiết kiệm CustomTiming này .

Thông tin thêm trong this GitHub Issue.

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