2016-12-27 18 views
0

ウェブページをスクラップしようとすると、私はASP.NETの__VIEWSTATE変数で作業する必要があります。だから、これまで楽観主義者だった私は、それらの変数とそのフォーマットについて読ませることにしました。 MicrosoftがOpen Sourceとして分類しても、私は正式な定義を見つけることができませんでした。Base64デコーダを使用して、文字列をデコードすることに誰もが同意します。グレート - それはViewstate:2種類のフォーマット?

次...作品 - と混乱がで設定場所です:デコーダの

  1. およそ3/4がバイナリ値(その値のタイプを示す文字を使用するように見えますフィールドはそれに続く)。 example of such a specificationですこのフォーマットはまた、最初の2バイトとして0xFF 0x01の「署名」を期待しているようです。など

  2. (例えばthis oneなど)記事の残りの部分はフォーマット内のフィールドが分​​離(またはマーク)されているフォーマットを記述t<...>p<...>によって、(これは私はページの場合のようですに興味がある)。

百ページを超えて見ても、2つのフォーマットの存在については何の言及も見つかりませんでした。

私の質問は次のとおりです:__VIEWSTATE変数の2つの異なるフォーマットが使用されていますか、何か基本的なものがありませんか?どこかで__VIEWSTATEコンテンツの正式な記述はありますか?

答えて

0

ビュー状態がシリアライズと System.Web.UI.LosFormatterすることによってデシリアライズされたクラス、LOSは、限られたオブジェクト を表しシリアライズ、かつ効率的にベース64に特定のタイプにオブジェクトの をシリアル化するように設計されていますエンコードされた文字列。

  • ストリング
  • 整数
  • ブール
  • :LosFormatterは にBinaryFormatterクラスでシリアル化することができるが、効率的にオブジェクトを次のタイプの をシリアル化するために構築されるオブジェクトの任意の型をシリアル化することができアレイ
  • アレイリスト
  • ハッシュテーブル
  • ペア
  • 三つ子

あなたがViewStateのについて知っておく必要があるすべて:Understanding View State

+0

感謝サンディエゴ。私はその参照を知っていた。私の問題は、viewstate *内部的に2つのフォーマットがあるようです。その参照は、低レベルの側面を記述しているようには見えません。 – jcoppens