2010-07-14 29 views
6

Tôi đang sử dụng shared hosting và không cho phép tôi sử dụng windows scheduler ... Vậy các cách để đạt được các nhiệm vụ được lên lịch tức là (timed mail) trong asp.net ... Tôi chỉ nhìn thấy background process bởi blog Jeff Atwood ... Có phải nó không? Hoặc bất kỳ cách nào khác để thực hiện các tác vụ theo lịch ...Cách lập kế hoạch nhiệm vụ (không cần viết lịch lên lịch) trong asp.net

Sau đó, tôi tìm thấy quartz.net nhưng tôi không thể tìm thấy ví dụ đơn giản nhúng quartz.net vào asp.net (mà không cần cài đặt máy chủ Quartz.Net cửa sổ dịch vụ) ... Bất kỳ gợi ý về quartz.net ...

+3

http://stackoverflow.com/questions/3243400/how-to-do-background-processing-similar- to-that-on-stackoverflow ... bạn hỏi cùng một câu hỏi ở đây ... – RameshVel

+0

làm thế nào điều này không phải là một bản sao của câu hỏi khác của bạn? –

+0

Giải pháp cuối cùng bạn đã đạt được là gì?Tôi có yêu cầu tương tự, nhưng vấn đề là Quartz.net ngừng hoạt động khi App pool khởi động lại: ( –

Trả lời

1

Tôi đã điều tra Microsoft.Web.Administration assembly Schedule Class để đạt được điều tương tự nhưng có vẻ như là lớp học chỉ có thể được sử dụng để lên lịch khởi động lại quá trình nhân viên IIS, đây là example of creating app pools and setting periodical restart.

Cách duy nhất để lên lịch với điều này là khởi động lại ứng dụng ASP.NET và sau đó trong Application_Start thực hiện công việc đã lên lịch. Nhưng đó là hack xấu xí không phải giải pháp, do đó, cuối cùng tôi đã thêm khả năng lên lịch cho dịch vụ cửa sổ sao lưu trong nhà của chúng tôi mà allready đang chạy trên máy chủ web, vì vậy IMO Quartz.net là giải pháp tốt nhất cho bạn. Có lẽ bạn có thể thuyết phục nhà cung cấp web của bạn cài đặt Quartz.net tất cả các giải pháp khác có vẻ như một hack sẽ cho bạn nhiều vấn đề hơn hoặc ít hơn.

0
+0

-1 Làm thế nào để được lưu trữ trong một tiến trình ASP.NET? –

+0

điều này có thể giúp bạn: http: // www. codeproject.com/KB/dotnet/ABTransClockArticle.aspx?msg=1990168#xx1990168xx hoặc kiểm tra liên kết cập nhật 2 –

+0

sẽ không giúp Pandya. Một con hoster mà không cho phép bạn chạy Windows Scheduler sẽ khó chấp nhận các Dịch vụ Windows riêng biệt –

3

Bạn coul d chỉ cần viết một trang ASP.Net thực hiện nhiệm vụ của bạn, ví dụ: gửi thư. Sau đó, sử dụng dịch vụ lên lịch trực tuyến như SetCronJob để gọi URL của trang trên máy chủ của bạn theo lịch biểu.

Nhược điểm của phương pháp rất đơn giản này là bạn phụ thuộc vào dịch vụ bên ngoài.

+0

tôi có thể tin tưởng không nó ... Bởi vì ứng dụng của tôi dựa trên khái niệm thư theo lịch biểu ... –

+0

Hoàn hảo! Chính xác những gì tôi cần, kịch bản trường hợp xấu nhất tôi sẽ tạo ra một số thứ thực sự đơn giản chạy từ máy của tôi như một bản sao lưu. – mhenrixon

0

Bạn có thể lấy ý tưởng từ this và đặt tác vụ của mình trong phương pháp KeepAlive. Mong! Nó giúp.

0

Tôi đã gặp vấn đề này rất lâu trước đây và không sử dụng dịch vụ của bên thứ ba, không có cách nào tuyệt vời xung quanh nó.

Điều đó nói rằng, tôi đã sử dụng đối tượng .NET Application Cache với thời gian hết hạn là 24 giờ.

Cache["DailyTask"] = true; 

Sau đó, trong lớp cơ sở của tôi, mọi yêu cầu trang được tạo, tôi đã kiểm tra biến hiện tại và nếu có, tôi đã chạy tác vụ. Nhược điểm của điều này là sau đó bạn đang phụ thuộc vào đó là yêu cầu trang được thực hiện cho ứng dụng của bạn.

Cuối cùng, một cách khác tôi đã thấy điều này, là đặt lại một cuộc gọi lại vào bộ nhớ cache hết hạn (phương thức CacheItemRemovedCallback) và sau đó chuỗi phương pháp đó để chèn một mục mới vào bộ nhớ đệm, cũng có gọi lại và lặp lại chu trình .

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