2008-09-11 13 views
5

CMSを構築しています。このサイトはaspxページのユーザーによって構築され管理されますが、HTMLの静的サイトを作成したいと考えています。 私たちが今やっていることは、AspxページのRenderメソッドをオーバーロードし、HTML文字列をファイルに書き込むコードhereが見つかりました。これは1ページでうまくいきますが、CMSの主な点は、作成者がシステム内の何かを編集する前から、最初からサイトのいくつかのHTMLページを自動的に作成したいということです。 誰もこれを行う方法を知っていますか?ASPXをHTMLにエクスポート

答えて

2

Renderメソッドを呼び出すことは、まだかなり簡単です。ページのインスタンスを作成し、WebRequestオブジェクトとともにスタブWebContextを作成し、ページのRenderメソッドを呼び出してください。あなたは自由に結果を求めて何でもすることができます。

または、curlまたはwgetスクリプトを書き込んで静的にしたいページをダウンロードして保存します。

2

wget(コマンドラインツール)を使用して、各ページを再帰的にクエリし、htmlファイルに保存できます。それは結果のHTMLのすべての必要なリンクを.aspxではなく.htmlファイルを参照するように更新します。このようにして、サーバで生成されたページ(テストしやすい)を使用しているかのようにすべてのサイトをコーディングし、それを静的ページに変換することができます。

パフォーマンス上の理由からだけ静的HTMLが必要な場合、私の好みはASP.Net出力キャッシュを使用することです。

2

これは非常に簡単な方法で行い、コードでは実行しないことをお勧めします。それは、あなたのCMSコードがCMSコードが何をすべきかを行うことを可能にし、可能な限り単純にします。

HTTrackのような製品を使用してください。それは「ウェブサイトコピー」と呼ばれます。サイトをクロールしてhtml出力を作成します。それは速くて無料です。あなたはそれが最良だと思うどんな頻度でも走らせることができます。

これは、HTML出力のニーズをCMSの設計と実装から切り離します。複雑さが軽減され、CMSコードにエラーポイントを導入することなくHTMLを出力する方法に柔軟性がもたらされます。

1

@ckarras:HTMLページをプログラムで作成し、手動で作成しないようにしたいので、外部ツールを使用しないでください。

@jttraino:サイトを出力する必要がある時間間隔がありません。ユーザーが新しいサイトを作成するときには、出力が発生する必要があります。

@Frank Krueger:WebContextとWebRequestを使用してページのインスタンスを作成する方法を理解できません。

searchdotnetで「wget」を検索し、WebClientという.netクラスについてa postになっています。 DownloadString()メソッドを使用すると、特定のURLから文字列を取得することができます。問題は、CMSがログインする必要があるため、メソッドがページに到達しようとしたときにログインページにスローされるため、login.aspx HTMLが返されるということです...

ここから続けることができますか?

4

Server.Ecxcuteメソッドを使用して私の問題の解決策を見つけたようです。

私はそれを利用するdemonstared articleが見つかりました:

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

その後、私はしたTextWriterにいくつかのmaniulatonsを行い、HTMLファイルに挿入します。エボイア!できます!

+0

私は記事であまりにも多くを見つけました。私はむしろこれをより簡単に見つけるだろうhttp://msdn.microsoft.com/en-us/library/fb04e8f7.aspx –

関連する問題