2015-02-08 今日のGlyph

■第1部 深夜2時くらい><

Hack数:54
ポイント:560
累計ポイント:4896

■第2部 朝8時〜朝10時

起きると雨降ってない^^
天気予報だと雨だったのに。

Translator金取るまではがんばると決めたので、
自転車で30分ほどのポータル群へ

9:30頃には本格的に降ってきたので、
今日はここで終了。

Hack数:39
ポイント:414
累計ポイント:5310

2015-02-06 今日のGlyphとLv10になった

会社を19:30頃出発。

ローソンでフライヤーを10枚印刷。

ドリプラでハックしていると、
昨日も遭遇した緑エージェントさんと再度出会う。

後、青のLv5エージェントさんをキャプチャ。
初フライヤー渡し。

Hack数:57
ポイント:389
累計ポイント:3482


まだやりたりないので静岡市街へ

ハックしたりワンコしたり、青エージェントさんを
リアルキャプチャしたりして、終わると2:00。

ハック数の記録はとり忘れたけど。
累計が4000くらいにはなってたので、
大分ハックしたとおもう。
フライヤーも2枚渡せて良かった。


最後にLv10になりました。

2015-02-02 今日のGlyph

はてダを放置してそろそろ一年。
書かない癖脱出を目指して…

Ingressを始めて、半年が経った。
TranslatorのゴールドメダルGETが直近の目標(≧∇≦)

Hack数:33
成功数:25(76%)
ポイント:360

累計ポイント:2498

まだまだ修行が足りないな。

Disk2Vhdのコマンドラインでシステムで予約済みパーティションを含めつつドライブ指定をする

Windows Server 2008にはシステムで予約済みとかいう領域が勝手にできる。
この環境でVHDに含めたくないドライブがある場合、Disk2Vhdのコマンドラインが使えない。
しょうがないのでUWSCで実行した。

Option Explicit
//==============================================================================
//   Disk2vhd自動化スクリプト
//   Disk2vhdのコマンドラインだとSystem Reservedを指定できないのでUWSCにて実行
//   (アスタリスクもあるが、VHDに入れたくないドライブがある場合に対応できない)
//------------------------------------------------------------------------------
//   13.06.06 shey_nassy 新規作成
//==============================================================================
//============================================================
//   設定
//============================================================
//disk2vhdフルパス
CONST C_D2V_PATH = "C:\Documents and Settings\SheyNassy\デスクトップ\Disk2vhd\disk2vhd.exe"
//VHDファイル保存ディレクトリ(末尾\無し)
CONST C_VHD_DIR  = "F:\VHD"
//VHDファイルプレフィックス
CONST C_VHD_PREFIX = "bkup_vhd_"
//バックアップ対象ドライブ(例.aryBackUpDrive[] = "C:\","D:\")
Dim aryBackUpDrive[] = "C:\"
//============================================================
//   定数
//============================================================
//チェックボックス状態
CONST C_CHECKBOX_NULL    = -1
CONST C_CHECKBOX_OFF     =  0
CONST C_CHECKBOX_ON      =  1
CONST C_CHECKBOX_INVALID =  2

//ドライブレター用文字定数
CONST C_CHAR_C = 67
CONST C_CHAR_Z = 90
//============================================================
//   メイン処理
//============================================================

Dim WindowId=Exec(C_D2V_PATH)
If WindowId < 0 Then
   WindowId = GetId("Disk2vhd - Sysinternals: www.sysinternals.com","Disk2VhdClass")
   If WindowId < 0 Then
      ExitExit
   EndIf
EndIf

//VHDファイル名
GETTIME()
Dim strVhdFileName = C_VHD_DIR + "\" + C_VHD_PREFIX + G_TIME_YY4 + G_TIME_MM2 + G_TIME_DD2 + ".vhd"
sendstr(WindowId,strVhdFileName,1,TRUE)

//不要なドライブノチェックをはずす
Dim DriveIdx
Dim DriveLetter
Dim BackUpDriveIdx
For DriveIdx = C_CHAR_C to C_CHAR_Z
   DriveLetter = ChrB(DriveIdx) + ":\"
   For BackUpDriveIdx = 0 to Length(aryBackUpDrive) - 1
      If DriveLetter <> aryBackUpDrive[BackUpDriveIdx] Then
         CheckOff(WindowId,DriveLetter)
      EndIf
   Next
Next


//実行
//clkitem(WindowId,"Create",CLK_BTN)

//処理終了待ち合わせ
//未実装


//終了
//clkitem(WindowId,"Close",CLK_BTN)
//============================================================
//   チェック解除
//============================================================
Procedure CheckOff(pWindowId,pTitle)
   Dim strCheckStatus
   strCheckStatus = clkitem(pWindowId,pTitle,CLK_LSTVEW)
   
   If strCheckStatus = C_CHECKBOX_ON Then
      //Check Off
      CLKITEM(pWindowId,pTitle,CLK_LSTVEW)
      //クリックで選択しかされないのでスペースを送る
      SCKEY(pWindowId,VK_SPACE)
   EndIf
Fend

//============================================================
//   Memo
//============================================================
//【起動オプション】
//オプションなしでスクリプト名と引数を指定した場合は、スクリプトを実行し、実行後はUWSC本体を終了します。
//UWSC.exe スクリプト名 [引数...]
//
///L
///L オプションを付けると、実行はせずに、UWSC本体にファイルを読み込ませるのみとなります。
//UWSC.exe /L スクリプト名 [引数...]
//
///K
///K オプションを付けると、スクリプトを実行し、実行後はUWSC本体を起動したままにします。
//UWSC.exe /K スクリプト名 [引数...]
//

無効な viewstate です。に苦戦

元々、windows server 2003 IIS6.5で動いてるシステムを
windows server 2008 R2 IIS7.5に移植した時のお話。

稼動して半日、お昼休み明けに大量のExceptionが発生!!

System.Web.UI.ViewStateException: 無効な viewstate です。
System.Web.HttpException: viewstate MAC の検証フィールドです。このアプリケーションが Web Farm またはクラスタによってホストされている場合、<machineKey> 構成が同一の validationKey および検証アルゴリズムを指定していることを確認してください。AutoGenerate をクラスタで使用することはできません。

クラスタなんてしてないし、どうしたものかと。。。

現象を再確認

  1. 出力されるExceptionは上記2つ
  2. 作業し続けるとエラーは出ずに、30分以上放置してから再度画面を触るとエラーが発生
  3. POST時のみ
  4. でない場合もある

解決方法


IISのアプリケーションプールを「DefaultAppPool」から「Classic .NET AppPool」に変更する





解決に至るまで

  • MAC検証無効でよくね?

検証エラーのViewState受け入れちゃダメでしょ、とつっこまれこの手は使えず
チナミニ、下記みたいな注意もあるので、これは安易に手をつけなくて良かったかもしれない。

重要 : 問題の診断に役立てるときにだけ、ビューステートの MAC 機能をオフにしてください。ビューステートの MAC をオフにしたままにして問題を回避しないでください。そうした場合は、セキュリティ ホールをもたらす可能性があります。詳細については、以下の MSDN Web サイトを参照してください。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpdnaspp/htm/SecNetch08.asp

  • 時間が立つとでるエラーだから、クッキーやらアイドルセッションやらの時間延ばせば。。。

意味無かった。。。

  • formタグにactionとかあるんじゃ

ソース見たけどそんなものは無かった

終わってみて

なんかすごい時間掛けて調べた割りに、やってみれることは少なかった。
このエラーがでて困っている人がいたら。


まずはここをみて切り分けてみたり

@IT:.NETエンタープライズWebアプリケーション開発技術大全 Webアプリケーションの状態管理
クラスタならこの辺がんばるらしいし
(僕はクラスタでは無いのでろくに見てないけど)

何?このエラー ( ホームページ ) - とあるプログラマーのグチ - Yahoo!ブログ
formタグにactionとか書いてないか見直してみたり


それでも直らないなら、アプリケーションプール変えて見るといいかもね