ASP.NET 2.0 - Cách sử dụng app_offline.htm


120

Tôi đã đọc về app_offline.htmtệp có thể được đặt trong thư mục gốc của ứng dụng .NET 2.0 về bản chất sẽ tắt ứng dụng và vô hiệu hóa bất kỳ trang nào khác được yêu cầu.

Tôi đã đặt tệp vào thư mục gốc và trang web của tôi vẫn tải. Tôi đã truy cập tài liệu mặc định trong IIS và đặt nó thành app_offline.htmvà trang web vẫn tải (đây có thể là sự cố bộ nhớ đệm)

Dù sao, có ai gặp vấn đề khi sử dụng cái này không? Tôi có làm điều gì sai?


Có trang nào của Microsoft ghi lại điều này không?
Coops



Tôi đã sử dụng thành công app_offline.htm để ẩn nội dung ứng dụng web của mình và hiển thị trang tạm thời. Tuy nhiên, tôi gặp sự cố khi xem lại dữ liệu gốc ngay cả sau khi xóa tệp app_offline.htm. Cô ấy là câu hỏi của tôi: stackoverflow.com/questions/42979042/…
naz786

Câu trả lời:


160

Tôi đã sử dụng thủ thuật app_offline.htm cực kỳ tiện dụng để tắt / cập nhật các trang web trong quá khứ mà không gặp bất kỳ sự cố nào.

Đảm bảo rằng bạn thực sự đang đặt tệp "app_offline.htm" trong "gốc" của trang web mà bạn đã định cấu hình trong IIS.

Đồng thời đảm bảo rằng tệp được đặt tên chính xác như sau: app_offline.htm

Ngoài ra, không có thay đổi nào khác đối với IIS mà bạn cần thực hiện vì quá trình xử lý tệp này (với tên cụ thể này) được xử lý bởi thời gian chạy ASP.NET chứ không phải chính IIS (đối với IIS v6).

Tuy nhiên, hãy lưu ý rằng mặc dù việc đặt tệp này trong thư mục gốc của trang web của bạn sẽ buộc ứng dụng "tắt" và hiển thị nội dung của chính tệp "app_offline.htm", bất kỳ yêu cầu hiện có nào vẫn sẽ được trang web thực phục vụ đối với họ. Chỉ những yêu cầu mới sẽ nhận được nội dung app_offline.htm.

Nếu bạn vẫn gặp sự cố, hãy thử các liên kết sau để biết thêm thông tin:

Scott Gu's App_Offline.htm

App_Offline.htm và khắc phục tính năng "Lỗi thân thiện với IE"

App_offline.htm sẽ dừng các yêu cầu hiện tại hay chỉ dừng các yêu cầu mới?


6
@JackM - Không sao! Trên thực tế, tôi thường để tệp trên trang web của mình và gọi nó là "xapp_offline.htm". Do đó nó chỉ ngồi đó không làm gì cả. Khi tôi muốn nâng cấp một số hoặc tất cả trang web, tôi chỉ cần đổi tên tệp và xóa tiền tố "x" (điều này thường được thực hiện qua FTP). Điều này sẽ tắt trang web cho tôi, tôi thực hiện nâng cấp, sau đó đổi tên tệp trở lại với tiền tố "x"!
CraigTP

@JackMarchetti - Điều này cũng sẽ hoạt động cho các trang web ASP.NET MVC sử dụng định tuyến global.asax chứ? Tôi đã kiểm tra tất cả các đề xuất ở đây nhưng vẫn không may mắn làm cho điều này hoạt động :(
Squig

Cập nhật cho nhận xét trước: Nó đang hoạt động và chắc hẳn là do một số loại vấn đề về bộ nhớ đệm. Tôi đã sử dụng <CTRL> + Refresh, nhưng có lẽ nó đang được lưu vào bộ nhớ cache ở một nơi khác.
Squig

Có trang nào của Microsoft ghi lại điều này không?
Coops

1
@CodeBlend Chà, liên kết đến blog của ScottGu khá chính thức, nhưng tôi cho rằng trang Microsoft "chính thức" nhất sẽ là trang này trên MSDN: msdn.microsoft.com/en-us/library/vstudio/…
CraigTP

47

Đảm bảo rằng tệp app_offline.htm của bạn dài ít nhất 512 byte. Một app_offline.htm không byte sẽ không có hiệu lực.

CẬP NHẬT: Các phiên bản mới hơn của ASP.NET/IIS có thể hoạt động tốt hơn so với lần đầu tiên tôi viết.

CẬP NHẬT 2: Nếu bạn đang sử dụng ASP.NET MVC, hãy thêm phần sau vào web.config:

<?xml version="1.0"?>
<configuration>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
</configuration>

1
Tôi có tên tập tin chính xác với một tập tin rỗng và làm việc - trang trống hiển thị không phụ thuộc vào url tôi đã sử dụng
Coops

Kiểm tra liên kết này cho vấn đề giới hạn 512 byte: codeproject.com/Articles/21319/...
Massood Khaari

Điều này đúng đặc biệt đối với các phiên bản cũ của trình duyệt IE có thể thay thế trang với thông báo lỗi riêng của nó
ChewToy

Scott Gu cũng mô tả nó trong blog
Matt,

2
Tôi chỉ có thể nhận được trang web MVC của tôi để đi vào ứng dụng chế độ offline bằng cách thay thế hoàn toàn web.config của tôi với trên
Matthew Khóa

14

Lưu ý rằng điều này hoạt động giống nhau trên IIS 6 và 7.x và .NET 2, 3 và 4.x.

Cũng lưu ý rằng khi có app_offline.htm, IIS sẽ trả về mã trạng thái http này:

HTTP/1.1 503 Service Unavailable

Tất cả là do thiết kế. Điều này cho phép bộ cân bằng tải của bạn (hoặc bất kỳ thứ gì) thấy rằng máy chủ không hoạt động.


1
Chắc chắn bạn không muốn bộ cân bằng tải của mình nghĩ rằng máy chủ đang ngoại tuyến, vì bạn muốn hiển thị app_offline.htmcho người dùng trong thời gian bảo trì của mình?
Luke

2
@Luke: Một ví dụ hay hơn về lý do tại sao phản hồi 503 lại hữu ích: Tốt hơn là trình thu thập thông tin web của Google biết trang web của bạn hiện đang hoạt động, thay vì quyết định lập chỉ mục nội dung "trang web không hoạt động" của bạn (và gắn cờ trang web của bạn là có rất nhiều nội dung trùng lặp Nội dung). Ngoài ra, có thể hữu ích nếu CDN của bạn có thể phát hiện ra nguồn gốc của bạn bị lỗi và do đó sẽ tránh được nội dung của bạn vào bộ nhớ đệm.
Brian

10

Vấn đề về quyền có thể xảy ra

Tôi biết bài đăng này khá cũ, nhưng tôi đã gặp phải vấn đề tương tự và tệp của tôi đã được viết đúng chính tả.

Ban đầu, tôi đã tạo tệp app_offline.htm ở một vị trí khác và sau đó chuyển tệp đó vào thư mục gốc của ứng dụng của tôi. Do thiết lập của tôi, tôi đã gặp sự cố về quyền.

Trang web hoạt động như thể nó không có ở đó. Tạo tệp trong thư mục gốc thay vì di chuyển nó, đã khắc phục được sự cố của tôi. (Hoặc bạn có thể chỉ sửa quyền trong thuộc tính-> bảo mật)

Hy vọng nó sẽ giúp một ai đó.


4

Đảm bảo rằng nó app_offline.htmnằm trong thư mục gốc hoặc trang web ảo trong IIS.


Nó chắc chắn ở gốc. tôi có inetput tôi \ wwwroot [WebsiteDirectory] \ app_offline.htm
Jack Marchetti

3

Đảm bảo rằng phần mở rộng tên tệp hiển thị trong trình thám hiểm và tên tệp thực sự là

app_offline.htm

không phải

app_offline.htm.htm


0

Tôi gặp phải một vấn đề rất giống với câu hỏi ban đầu mà tôi phải mất một chút thời gian để giải quyết.

Chỉ trong trường hợp bất kỳ ai khác đang làm việc trên ứng dụng MVC và tìm thấy đường vào chuỗi này, hãy đảm bảo rằng bạn có ánh xạ ký tự đại diện tới .Net aspnet_isapi.dll được xác định. Ngay sau khi tôi làm điều này, app_offline.htm của tôi bắt đầu hoạt động như mong đợi.


Các bước cấu hình IIS 6

Trên Thuộc tính ứng dụng IIS, chọn tab Thư mục ảo.

Trong Cài đặt ứng dụng, nhấp vào nút Cấu hình.

Trong bản đồ ứng dụng ký tự đại diện, nhấp vào nút Chèn.

Nhập C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll, bấm OK.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.