私はロギング目的で一度似たようなことをしました。私はGETとPOSTの両方のリクエストをログに記録しました。私たちのテストグループによって記録されたエラーを追跡するため、そしてライブアプリケーションによって、それらを複製することができました。
ここで最も大きなトリックは、ウェブアプリケーションが大部分はステートレスである必要があることです。 Sessoinでアプリケーションの周りに情報を渡すか、アプリケーションでViewStateをまったく使用すると、さらにいくつかのバンプが発生する可能性があります。
ウェブサイトをRESTfulに作成したことがあっても、これはあまり難しくありません。そして、RESTful(http://en.wikipedia.org/wiki/Restful)では、与えられたRESTfulな要求は、サーバーに対して行われた以前の要求について何も仮定していないという事実を参照しています - それ自体は原子であり、実行しようとしているアクションを実行するために必要なすべての情報を含みます。
私は、次の手順を実行して、これを達成:
1)私は私が監視したいアクションにActionFiltersを作成しました。これらのActionFiltersは、POSTデータの取得を実行し、それをデータベースに保存しました。これは、コード内で侵襲性が低く、関心のあるすべてのアクションに簡単に追加/削除できるため、うまくいきました。2)ActionFilterは基本的にリクエストタイプ(GET vs. POST、HttpContext.Current経由)を記録しました。 .Request.HttpMethod(正しくリコールした場合)とリクエストが却下したURL。 POSTの場合、フォームデータ(HttpContext.Current.Request.Form)をJSONにシリアル化しました。私はJSONを人間が読めるようにしました(これは私の目的である問題の診断を助けるために重要です)。そして、FORMデータを使って作業しているので、フラットなJSON構造に簡単にシリアライズするのに十分です。あなたのニーズに応じて余分になるかもしれませんが、私は情報目的のために他のリクエスト変数もすべて(HttpContext.Current.Request.Headers)ログに記録していると思います。
私はSystem.Web.Script.Serialization.JavaScriptSerializerを使用してフォームデータをシリアル化しました。
このすべてのデータは、私は、具体的に鑑賞するために設計された新しいMVCコントローラを作成し、再起動データベース(要求タイプ、URL、シリアル化された投稿データ、タイムスタンプ、現在のユーザ、等)
3)に格納されました要求。私の場合は、監視の要求を記録していたので、LoggingControllerでした。私の主なビューは、すべてのリクエストとターゲットURLのリストでした。私が掘り下げて特定のエントリの「表示」/「表示」を行った場合、記録されたすべての詳細が表示されます。
アクションの実際の複製は、JSONデータをデシリアライズして、「ビュー」ページにデシリアライズされたデータが挿入された(私の場合は隠れた)フォームフィールドを構築することによって作成されました。その後、GETの場合はGreen、POSTの場合は赤のボタンを追加しました。ボタンをクリックするとアクションが複製されます.GETは簡単ですが、ターゲットページにユーザーを送信するだけです。
しかし、POSTの場合、ユーザーに「POSTリクエストを複製しようとしていますが、呼び出されたアクション(削除、更新など)によってサーバー上のデータが変更される可能性があります。 "
「はい」をクリックすると、JavaScriptを使用してフォームを送信し、POSTアクションとなり、重複アクションが発生します。
あなたの環境のデータをロギングし、そのデータを他の環境データベースにコピーして、私の "LoggingController"に相当するものをロードして、必要なアクション複製する。
そして明らかに、あなたはこれを望み通りにとることができます。いくつかの単体テストなどを駆動するためにあなたの "記録された"データを使うことができます。
これらの環境をもう少し説明できますか?彼らは具体的に開発のためであるか、またはステージング環境(「受け入れ」)がコンテンツの編集/承認段階として使用されていますか?これが当てはまる場合は、単一のdbを使用し、レコードを公開するかどうかを示すフラグをレコードに設定する必要があります。 – Soviut
私たちの環境には、データベースとドメイン間のアクセス権が別々になっています。私は実際には、特定の環境に投稿されたときに他のアクション(さまざまなアプリケーションの再起動やリフレッシュ)を引き起こす内部設定項目を宣伝することも検討しています。 –
私は似たようなものを探していますサンプルはありますか? –