2008-09-11 58 views
5

Chúng tôi đang xây dựng CMS. Trang web sẽ được xây dựng và quản lý bởi người dùng trong các trang aspx, nhưng chúng tôi muốn tạo một trang web tĩnh của HTML. Cách chúng tôi đang làm bây giờ là với mã tôi tìm thấy here rằng quá tải các phương pháp Render trong trang Aspx và viết chuỗi HTML vào một tập tin. Điều này làm việc tốt cho một trang, nhưng điều với CMS của chúng tôi là chúng tôi muốn tự động tạo một vài trang HTML cho trang web ngay từ đầu, ngay cả trước khi người sáng tạo đã chỉnh sửa bất kỳ nội dung nào trong hệ thống. Có ai biết cách nào để làm điều này không?Xuất ASPX sang HTML

Trả lời

2

Gọi phương thức Render vẫn còn khá đơn giản. Chỉ cần tạo một phiên bản trang của bạn, tạo một thư mục WebContext cùng với đối tượng WebRequest và gọi phương thức Render của trang. Sau đó bạn được tự do làm bất cứ điều gì bạn muốn với kết quả.

Hoặc, viết một chút curl hoặc wget tập lệnh để tải xuống và lưu trữ bất kỳ trang nào bạn muốn đặt tĩnh.

2

Bạn có thể sử dụng wget (công cụ dòng lệnh) để truy vấn đệ quy từng trang và lưu chúng vào tệp html. Nó sẽ cập nhật tất cả các liên kết cần thiết trong html kết quả để tham chiếu các tệp .html thay vì .aspx. Bằng cách này, bạn có thể mã tất cả các trang web của bạn như thể bạn đang sử dụng các trang được tạo bởi máy chủ (dễ kiểm tra hơn), và sau đó chuyển đổi nó thành các trang tĩnh.

Nếu bạn cần HTML tĩnh chỉ vì lý do hiệu suất, tùy chọn của tôi sẽ là sử dụng bộ nhớ đệm đầu ra ASP.Net.

2

Tôi khuyên bạn nên làm điều này một cách rất đơn giản và không làm điều đó trong mã. Nó sẽ cho phép mã CMS của bạn làm những gì mà mã CMS nên làm và giữ cho nó đơn giản nhất có thể.

Sử dụng sản phẩm như HTTrack. Nó tự gọi mình là một "máy photocopy trang web". Nó thu thập dữ liệu trang web và tạo đầu ra html. Đó là nhanh chóng và miễn phí. Bạn chỉ có thể chạy nó ở bất kỳ tần suất nào bạn nghĩ là tốt nhất.

Nó tách rời nhu cầu đầu ra HTML của bạn khỏi thiết kế và triển khai CMS. Nó làm giảm độ phức tạp và cung cấp cho bạn một số tính linh hoạt trong cách bạn xuất HTML mà không giới thiệu các điểm thất bại trong mã CMS của bạn.

1

@ckarras: Tôi không muốn sử dụng một công cụ bên ngoài, bởi vì tôi muốn các trang HTML được tạo theo lập trình và không phải theo cách thủ công.

@jttraino: Tôi không có khoảng thời gian mà trang web cần phải được xuất - đầu ra phải xảy ra khi người dùng tạo trang web mới.

@Frank Krueger: Tôi không thực sự hiểu cách tạo một phiên bản trang của tôi bằng WebContext và WebRequest.

Tôi đã tìm kiếm "wget" trong searchdotnet và đã truy cập a post về lớp .net được gọi là WebClient. Nó dường như làm những gì tôi muốn nếu tôi sử dụng phương thức DownloadString() - lấy một chuỗi từ một url cụ thể. Vấn đề là bởi vì CMS của chúng tôi cần phải đăng nhập vào, khi phương pháp cố gắng để đạt được trang nó được ném đến trang đăng nhập, và do đó trả về login.aspx HTML ...

Bất kỳ suy nghĩ như thế nào tôi có thể tiếp tục từ đây không?

4

Tôi dường như đã tìm ra giải pháp cho vấn đề của mình bằng cách sử dụng phương thức Server.Ecxcute.

Tôi tìm thấy một article rằng demonstared việc sử dụng của nó:

TextWriter textWriter = new StringWriter(); 
Server.Execute("myOtherPage.aspx", textWriter); 

Sau đó, tôi làm một vài maniulatons trên TextWriter, và chèn nó vào một tập tin html. Et thì đấy! Nó hoạt động!

+0

Tôi đã tìm thấy quá nhiều trong bài viết. Tôi muốn tìm http://msdn.microsoft.com/en-us/library/fb04e8f7.aspx đơn giản hơn này –