Có cách nào được đề xuất để trả lại ứng dụng asp.net ngoài việc chạm vào web.config từ bên trong ứng dụng không? là HttpRuntime.UnloadAppDomain()
; cách ưa thích để làm điều này? và nếu như vậy, nơi nào bạn làm điều này? Trong việc dỡ bỏ một trang hoặc một số nơi khác trong ứng dụng?làm thế nào để khởi động lại ứng dụng asp.net ngoài việc sửa đổi web.config
Trả lời
Nếu đây là .NET 2.0 hoặc cao hơn, bạn có thể thêm vào tệp "App_offline.htm", thực hiện yêu cầu tới máy chủ, xóa nó và sau đó thực hiện một yêu cầu khác tới máy chủ.
Chuỗi sự kiện này sẽ buộc ASP.NET dỡ ứng dụng miễn là tệp app_offline.htm tồn tại trong thư mục.
blog entry Scott Guthrie về nó: http://weblogs.asp.net/scottgu/archive/2005/10/06/426755.aspx
Bạn cũng có thể dừng và bắt đầu Hồ bơi ứng dụng được liên kết với ứng dụng.
nhưng đây là quyền của IIS. trong một số trường hợp tôi có thể không có quyền truy cập vào hộp IIS vì vậy tôi đang tìm một cái gì đó có lập trình. – MikeJ
Bạn có thể tái chế nhóm ứng dụng bằng WMI: http://blogs.iis.net/chrisad/archive/2006/08/30/Recycling-Application-Pools-using-WMI-in-IIS-6.0.aspx – Portman
. tôi không biết rằng – MikeJ
Chạm web.config từ bên trong một ứng dụng là một ý tưởng tồi, IMO. Ngoài ra, ý tưởng của việc có một tập tin mà bạn sửa đổi là một chút hackney, IMO.
Các tài liệu cụ thể nói rằng UnloadAppDomain
sẽ đóng ứng dụng xuống:
UnloadAppDomain cho phép tắt máy tính chương trình của các ứng dụng không sử dụng.
Bạn sẽ có thể thực hiện cuộc gọi này ở bất kỳ đâu trong ứng dụng. Hãy nhớ rằng, bạn có thể nhận được SecurityException
, vì vậy hãy đảm bảo rằng thời gian chạy cung cấp cho bạn các quyền thích hợp (bạn có thể muốn đưa nó vào thư viện và thực hiện cuộc gọi và sau đó đặt thư viện trong GAC bằng chứng.).
có. đây là lý do tôi hỏi. sửa đổi web.config dường như xấu xí và có khả năng để chúng tôi viết lên trên thedailyWTF.com :) – MikeJ
Tôi nghĩ rằng một dòng tốt hơn để báo giá sẽ là: "Chấm dứt các ứng dụng hiện tại. Ứng dụng khởi động lại trong thời gian tới một yêu cầu được nhận cho nó." Phần "không sử dụng" trong báo giá đó có thể được đọc là "sẽ chỉ tắt nếu không có ai đang sử dụng nó", đó không phải là trường hợp. –
Sử dụng System.Web.HttpRuntime.UnloadAppDomain() –
Nếu bạn không muốn dừng và bắt đầu nhóm ứng dụng, bạn luôn có thể tái chế nó.
Bạn có thể làm điều này bằng cách gọi HttpRuntime.ShutdownAppDomain phương pháp (bạn sẽ cần phải sử dụng phản ánh để gọi nó, vì nó là một phương pháp tĩnh tư nhân)
Xem How to restart an IIS Worker Process programmatically (i.e. shutdown the current ASP.NET Domain) cho một ví dụ về làm thế nào tôi sử dụng phương pháp này trong 'Restart' REST API
Bạn có thể khởi động lại ứng dụng web một cách an toàn bằng cách tạo hoặc đổi tên thư mục vào thời gian chạy theo thư mục ứng dụng. Rõ ràng bạn cần cung cấp cho người dùng được gán để chạy ứng dụng "sửa đổi" các quyền đối với thư mục web hoặc tới một thư mục con bên dưới nó.
phương pháp được đề cập tại http://www.bartlannoeye.be/blog/restarting-a-.net-web-application-without-restarting-iis
tôi đã sử dụng đoạn mã sau để làm điều đó trong trường hợp của tôi. Sửa đổi nó để hoạt động trên thư mục con "có thể ghi"
protected void RestartButton_Click(object sender, EventArgs e)
{
//restart web app (instead of iisreset)
DirectoryInfo dir = new DirectoryInfo(Server.MapPath("restart"));
if (dir.Exists)
{
Directory.Move(dir.FullName, dir.FullName + "ed");
}
else
{
DirectoryInfo dired = new DirectoryInfo(Server.MapPath("restarted"));
if (dired.Exists)
{
Directory.Move(dired.FullName, dir.FullName);
}
else
{
Directory.CreateDirectory(dir.FullName);
}
}
}
cũng không hoạt động với tôi. Tôi thấy thư mục đang được tạo nhưng sự kiện application_Start không được gọi! – KMX
Liên kết Bart Lannoeye đó dường như đã chết – brennanyoung
mã này hoạt động cho tôi. chỉ cần gọi nó để tải lại ứng dụng.
System.Web.HttpRuntime.UnloadAppDomain();
Phương pháp này sẽ chỉ dỡ bỏ ứng dụng của chúng tôi.Nếu bạn chỉ cần đặt phương pháp này trong một nút web ASP.NET bạn hoàn toàn được thực hiện. Vì vậy, khi nào ứng dụng của chúng tôi sẽ được tải lại? Trên thực tế, nếu bạn nhấp vào nút của bạn, trước tiên nó sẽ khởi chạy phương thức của chúng tôi và tải ứng dụng. Hơn nữa trên trang web chúng tôi đang ở tại thời điểm đó cũng sẽ được tải lại, bởi vì chúng tôi chỉ cần nhấp vào một nút và trang web sẽ làm mới. Sau khi khởi chạy phương thức của chúng tôi, quy trình làm mới trang cũng sẽ khiến ứng dụng của chúng tôi tải lại.
Dường như hoạt động tốt và chắc chắn là giải pháp đơn giản nhất được đưa ra ở đây! –
- 1. Bạn có thể sửa đổi web.config và KHÔNG khởi động lại ứng dụng ASP.NET không?
- 2. Làm cách nào để bạn sửa đổi cài đặt ứng dụng web.config khi chạy?
- 3. Làm cách nào để đặt lại trang Khởi động ASP.NET?
- 4. Làm thế nào để khởi động một ứng dụng ASP.NET MVC trên IIS 7.5?
- 5. Nội địa hóa ASP.NET: Thay đổi tài nguyên mà không cần khởi động lại ứng dụng?
- 6. Làm thế nào để thay đổi chủ đề của một ứng dụng ASP.NET tổng động?
- 7. Làm thế nào để làm khởi động lại với Unicorn?
- 8. Làm thế nào để ứng dụng ASP.NET của tôi nhận được các thiết lập SMTP tự động từ web.config?
- 9. Khởi động lại ứng dụng trong Eclipse
- 10. Android Khởi động lại ứng dụng
- 11. Làm thế nào để khởi động lại ứng dụng nếu nó bất ngờ shutdown
- 12. Khởi động lại ứng dụng Backbone
- 13. Quartz một lần làm việc khi khởi động ứng dụng
- 14. Ứng dụng Android khởi động lại trên thay đổi hướng
- 15. làm thế nào để khởi động lại kho git
- 16. Khởi động lại ứng dụng bằng C#
- 17. Làm thế nào để có được thời gian để ứng dụng khởi động?
- 18. Tự động khởi động lại ứng dụng Net khi thay đổi cấu hình
- 19. Làm thế nào để thay đổi không gian làm việc khởi động Eclipse mặc định?
- 20. Làm thế nào để mã hóa ASP.NET 4.0 Web.Config?
- 21. Làm việc với Web.Release.config (chuyển đổi Web.config)
- 22. Đăng ký tuyến động, cần khởi động lại ứng dụng?
- 23. Làm thế nào để khởi tạo ứng dụng xương sống của bạn trong vòng require.js sau gọi lại bên ngoài
- 24. Làm thế nào để khởi động lại từ vỏ tro?
- 25. Làm thế nào để khởi động lại dịch vụ RabbitMQ
- 26. Tự động khởi động lại ứng dụng Erlang
- 27. Làm thế nào để gỡ lỗi các ứng dụng PyQt mà không cần khởi chạy lại?
- 28. Làm thế nào tôi có thể khởi động lại ứng dụng iphone của tôi
- 29. Làm thế nào để không khởi động lại máy chủ mọi lúc khi làm việc với Flask hoặc Express?
- 30. khởi động lại ứng dụng mà không cần khởi động lại máy chủ?
không htis chỉ mất hệ thống offline. Tôi muốn nó khởi động lại/tải lại với bộ nhớ cache sạch/phiên và muốn. khi tôi xóa app_offline.htm, thao tác này sẽ sao lưu nó theo mặc định? – MikeJ
@MikeJ - no. Nó tắt ứng dụng và dỡ miền ứng dụng khỏi máy chủ cho đến khi tệp bị xóa. –
@MikeJ - Cũng xin lưu ý rằng đây KHÔNG phải là một thay đổi có lập trình. Bạn sẽ cần phải thể chất thêm và loại bỏ các tập tin cho nó để làm việc –