2010-11-19 23 views
6

có cách nào trong C# để có thể ping url mỗi 15 phút và nhận phản hồi từ máy chủ không?C# ping một trang web? (dịch vụ giữ trẻ)

Tôi muốn thử xem liệu .net có thể được sử dụng để xây dựng một công cụ đơn giản để các trang web asp.net gọi lại xây dựng để người dùng đầu tiên không bị phạt tải khi ứng dụng được bắt đầu hay không.

hoặc nếu có ai có phương pháp thay thế hoàn thành cùng một mục tiêu ... suy nghĩ? lời khuyên? ý tưởng?

Trả lời

9

Thông thường người đẩy bản phát hành nên truy cập sau khi họ tải lên trang web chỉ vì mục đích thử nghiệm (đảm bảo không có gì bị đánh bom). Nhưng nếu bạn đang tìm kiếm một cách tiếp cận theo chương trình, WebClient có thể hữu ích ...

using (WebClient client = new WebClient()) 
{ 
    client.DownloadString("http://wwww.sitename.com/"); 
} 

Sau đó, làm cho nó một exe và sử dụng các cửa sổ lên lịch để chạy nó. Thậm chí có thể đặt điều này trong một WinService và tình trạng báo cáo để đăng nhập các tập tin.

Cập nhật:

Dường như VS2012 nay mở trang sau một xuất bản, làm cho những đẩy trang web là người đầu tiên yêu cầu.

Ngoài ra, nếu bạn thấy bạn phải truy cập thường xuyên (mỗi 15 phút như được đề cập trong câu hỏi), bạn có thể muốn xem lại cấu hình IIS/AppPool và thay đổi thời gian chu kỳ thành cái gì đó lâu hơn. IIS tự bảo tồn tài nguyên không được sử dụng, và do đó nếu một trang web chưa được truy vấn trong một thời gian, nó sẽ thực sự giải phóng bộ nhớ cho một ứng dụng khác để sử dụng.

+0

"Thông thường người đẩy bản phát hành nên truy cập sau khi họ tải lên trang web" Tuyệt đối những gì sẽ xảy ra! –

+1

@Greg B Không phải luôn luôn như vậy trong môi trường cân bằng tải. Nếu bạn có 100 máy chủ thì sao? –

+0

@ RobStevenson-Leggett Điểm công bằng. Mặc dù tôi mong đợi các cân bằng tải hoặc ứng dụng để có một số giám sát sức khỏe ở quy mô đó. –

3

Bạn có thể tạo một HttpWebRequest và sử dụng một cái gì đó như Quartz.NET để lên lịch cho nó.

1

Bạn chỉ có thể kích hoạt WebRequest - ping sẽ không làm cho trang web xây dựng lại.

1

Tôi muốn cài đặt curl và sử dụng một nhiệm vụ lên kế hoạch để làm những gì bạn muốn.

Tôi đã kết hợp nó với PowerShell để khởi động lại các nhóm ứng dụng.

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