Có cách nào tôi có thể xác định hồ bơi ứng dụng (trong IIS7) kéo dài bao lâu (thời gian bắt đầu hoặc khởi động lại lần cuối) trong C#?Nhận hồ sơ ứng dụng Thời gian hoạt động trong C#
Trả lời
lừa Thật ngu ngốc: trong một số lớp học mà tất cả mọi thứ sử dụng, sử dụng một constructor lớp nhớ thời gian bắt đầu của bạn và sử dụng trang aspx để nhận nó. Bây giờ so sánh với thời gian hiện tại.
Bởi constructor lớp bạn có nghĩa là 'static' constructor?Bởi vì constructor tĩnh là những gì bạn muốn làm với điều này, tôi chưa bao giờ xem xét cách dễ dàng bạn có thể sử dụng một constructor tĩnh để đạt được một cái gì đó như thế này trước khi mặc dù. –
Hàm tạo lớp trong hàm IL = static constructor trong C#. – Joshua
AppDomain có thể được tái chế (thay đổi web.config) mà không có hồ bơi ứng dụng đang được tái chế (quá trình w3wp.exe). Phương thức khởi tạo tĩnh này sẽ chỉ đo khởi động lại appdomain mới nhất. Sử dụng câu trả lời thông tin câu trả lời (@EricHumphrey) nếu bạn thực sự cần thời gian bắt đầu quá trình hồ bơi ứng dụng. – yzorg
Từ ứng dụng ASP.NET, bạn có thể thử TimeSpan uptime = (DateTime.Now - ProcessInfo.GetCurrentProcessInfo().StartTime)
Nếu bạn nghiền Restarting (Recycling) an Application Pool và http://forums.iis.net/t/1162615.aspx, bạn sẽ nhận được nó
DateTime.Now -. Process.GetCurrentProcess() StartTime
Process.GetCurrentProcessInfo() không tồn tại.
Thật thú vị, điều này tồn tại một ứng dụng khởi động lại, vì vậy tôi không chắc chắn chính xác như thế nào. –
nếu bạn thấy rằng Process.GetCurrentProcessInfo() không tồn tại như một người dùng khác đề cập,
System.Diagnostics.Process.GetCurrentProcess().StartTime
có thể làm việc cho bạn.
(Tôi muốn thêm này như là một lời nhận xét bài Eric Humphrey của nhưng tôi không được phép)
Dựa trên trên, chúng tôi đã tạo ra một lớp đơn giản như vậy ..
public static class UptimeMonitor
{
static DateTime StartTime { get; set; }
static UptimeMonitor()
{
StartTime = DateTime.Now;
}
public static int UpTimeSeconds
{
get { return (int)Math.Round((DateTime.Now - StartTime).TotalSeconds,0); }
}
}
và gọi nó trong Application_Start() trong Global.asax.cs như
var temp = UptimeMonitor.UpTimeSeconds;
sau đó nó có thể được truy cập bất cứ nơi nào sử dụng
UptimeMonitor.UpTimeSeconds
Một trong hai cách tiếp cận tồn tại mà cá nhân tôi sử dụng. Sử dụng lớp tĩnh (như được hiển thị trong câu trả lời của @ Original10) hoặc sử dụng các biến số Application
.
Tôi nhận thấy rằng việc sử dụng các biến số Application
có thể chấp nhận được vì tôi nhận thấy khởi động lại ứng dụng Process.GetCurrentProcess()
còn sống sót (ví dụ: sửa đổi web.config hoặc thư mục bin). Tôi cần một cái gì đó sẽ phục vụ cho trang web khởi động lại cũng như.
Trong Global.asax của bạn, thêm dòng sau vào
public void Application_Start(Object sender, EventArgs e)
{
...
Application["ApplicationStartTime"] = DateTime.Now.ToString("o");
}
Trong code của bạn, nơi bạn cần đến nó, bạn có thể làm một cái gì đó như:
var appStartTime = DateTime.MinValue;
var appStartTimeValue = Web.HttpCurrent.Application["ApplicationStartTime"].ToString();
DateTime.TryParseExact(appStartTimeValue, "o", null, Globalization.DateTimeStyles.None, Out appStartTime);
var uptime = (DateTime.Now - appStartTime).TotalSeconds
var lsOutput = $"Application has been running since {appStartTime:o} - {uptime:n0} seconds."
Mà sẽ sản xuất cái gì đó dọc theo dòng
Application has been running since 2018-02-16T10:00:56.4370974+00:00 - 10,166 seconds.
Không có kiểm tra biến ứng dụng hoặc khóa ứng dụng nếu yêu cầu d. Tôi sẽ để điều này như một bài tập cho người dùng.
- 1. Nhận Hồ sơ Ứng dụng Hồ sơ theo chương trình
- 2. Nhận thời gian hoạt động của ứng dụng
- 3. Thời gian biên dịch hồ sơ
- 4. Nhận thời gian không hoạt động/không hoạt động trong ứng dụng WPF
- 5. Hồ sơ ứng dụng WPF
- 6. Các ứng dụng jQuery trong hồ sơ
- 7. Hồ sơ ứng dụng Linux
- 8. Lập hồ sơ ứng dụng Java Spring
- 9. động tìm điều kiện trong hồ sơ hoạt động
- 10. ValueError: I/O hoạt động trong hồ sơ khép kín
- 11. SQL: Nhận hồ sơ được tạo trong phạm vi thời gian cho các ngày cụ thể
- 12. Lập hồ sơ các ứng dụng JNI
- 13. cách hồ sơ khởi động ứng dụng với visualvm
- 14. Lập hồ sơ C++ ứng dụng đa luồng
- 15. Làm thế nào để hồ sơ các ứng dụng Akka?
- 16. Lập hồ sơ ứng dụng Chrome
- 17. Ứng dụng iPhone "có xác nhận hoạt động vượt quá thời gian cho phép"
- 18. Làm cách nào để hồ sơ khởi động ứng dụng Rails?
- 19. Thời gian hoạt động dưới linux trong C
- 20. Giữ hồ sơ về thời gian đăng nhập và thời lượng phiên - Java - Spring Security
- 21. Hồ sơ hoạt động vòng đời/phương tiện hoạt động trên màn hình khóa
- 22. Duy trì hồ sơ mua hàng trong ứng dụng iOS
- 23. Hồ sơ cấp phép cửa hàng ứng dụng hết hạn
- 24. hồ sơ đếm trong C# sử dụng LINQ
- 25. Overhead của bộ đếm thời gian trong ứng dụng C#
- 26. COUNT/GROUP BY với hồ sơ hoạt động?
- 27. Proxy ứng dụng hồ sơ người dùng không thể truy xuất phân vùng từ Ứng dụng hồ sơ người dùng
- 28. Lập hồ sơ các ứng dụng .NET với Đồng hồ bấm giờ
- 29. Hồ sơ Maven - Kích hoạt Hồ sơ tùy thuộc vào bao bì
- 30. Django default = timezone.now() lưu hồ sơ bằng cách sử dụng "cũ" thời gian
Bên ngoài hoặc trong ứng dụng ASP.NET của bạn? –
Bên ngoài. Tôi đã chơi xung quanh với Microsoft.Web.Administration.ApplicationPool, nhưng tôi không thấy bất cứ điều gì như xa như thời gian. – JPero