CMSを構築しています。サイトはユーザーによって aspx ページで構築および管理されますが、HTML の静的サイトを作成したいと考えています。ここで見つけたコードを使用して、Aspx ページの Render メソッドをオーバーロードし、HTML 文字列をファイルに書き込みます。これは単一のページでは問題なく機能しますが、CMS では、作成者がシステムで何かを編集する前であっても、最初からサイト用にいくつかの HTML ページを自動的に作成したいと考えています。これを行う方法を知っている人はいますか?
5 に答える
Server.Ecxcute メソッドを使用して、問題の解決策を見つけたようです。
その使用法を示した記事を見つけました。
TextWriter textWriter = new StringWriter();
Server.Execute("myOtherPage.aspx", textWriter);
次に、textWriter でいくつかの操作を行い、それを html ファイルに挿入します。出来上がり!できます!
メソッドの呼び出しはRender
非常に簡単です。WebContext
ページのインスタンスを作成し、オブジェクトと共にスタブを作成し、ページのメソッドをWebRequest
呼び出すだけです。Render
その後、結果に対して自由に何をしてもかまいません。
または、静的にしたいページをダウンロードして保存するスクリプトをcurl
少し書いてください。wget
wget (コマンド ライン ツール) を使用して、各ページを再帰的にクエリし、それらを html ファイルに保存できます。.aspx ではなく .html ファイルを参照するように、結果の html で必要なすべてのリンクを更新します。このようにして、サーバーで生成されたページを使用しているかのようにすべてのサイトをコーディングし (テストが容易)、それを静的ページに変換できます。
パフォーマンス上の理由だけで静的 HTML が必要な場合は、ASP.Net 出力キャッシュを使用することをお勧めします。
これは非常に簡単な方法で行い、コードでは行わないことをお勧めします。これにより、CMS コードがすべきことを CMS コードで実行できるようになり、可能な限りシンプルに保つことができます。
HTTrackなどの製品を使用します。それは自分自身を「ウェブサイトコピー機」と呼んでいます。サイトをクロールし、html 出力を作成します。それは速くて無料です。最適と思われる周波数で実行することができます。
HTML 出力のニーズを CMS の設計と実装から分離します。これにより複雑さが軽減され、CMS コードに障害点を導入することなく HTML を出力する方法にある程度の柔軟性が得られます。
@ckarras: HTML ページを手動ではなくプログラムで作成したいので、外部ツールを使用したくありません。
@jttraino: サイトを出力する必要がある時間間隔がありません。ユーザーが新しいサイトを作成するときに uotput を実行する必要があります。
@Frank Krueger: WebContext と WebRequest を使用してページのインスタンスを作成する方法がよくわかりません。
searchdotnetで「wget」を検索したところ、 WebClient という .net クラスに関する投稿にたどり着きました。DownloadString() メソッドを使用すると、私が望むことを行うようです - 特定の URL から文字列を取得します。問題は、CMS にログインする必要があるため、メソッドがページに到達しようとすると、ログイン ページにスローされ、login.aspx HTML が返されることです...
ここからどのように続けることができるかについて何か考えはありますか?