ここはHttpContext.Item使わなくてもBeginGetResponseにstateの代わりにweb渡せばEndAsync3でresult.AsyncStateでとれますね。今度はFlickrの画像をWebRequestで取得するように変更。デバッグ出力のスレッドIDはBeginとEndでちゃんと違う。そんなこんなで、どうやって書くのが正しいのかいまいちよく分からないAsyncController。ちなみにRouteは↓こんな感じで書いてます。思ってた所に新たな非同期エントリ登場。Codingこれまた全然違う作り方してるんだよね。Controllerはそのままに、AsyncMvcHandler実装(他にもいろいろあるけど)で乗り切る方法。これだとControllerFactoryもいじる必要無いし、アクション単位でAsyncAction属性指定で非同期判別。戻り値もActionResultだし。サンプルコードが↓こんなの。}this.AsyncっていうのがControllerの拡張メソッド。これでEndProcessRequestの時に呼び出すdelegateを指定。