10/03/09 21:13:14
InProc
ASP.NET3.5 + IIS6 でセッション変数使用中にWeb.configを保存しなおしたら
ほんとうにセッション変数が消えてしまいました・・・
こんな危険なセッションモードが「デフォルト」になっているのは何故ですか?
950:nobodyさん
10/03/09 21:21:56
たぶん、昔のASPのデフォルトがInProcだったから
951:nobodyさん
10/03/09 21:31:21
ワーカープロセスは、CPUやメモリの負荷が高くなっても再起動しますよね。
昔の人はどうやって運用してたんだろう。
952:nobodyさん
10/03/09 22:28:37
InProcなセッションがリサイクルで吹っ飛ぶのは「IISの常識」
IISの動作を見れば分かり切ったことだし、ASP.NET開発の書籍でSessionのとこ見れば必ず注意事項として載ってる
ところが、MSのオフィシャル情報にはこう載ってる罠
URLリンク(msdn.microsoft.com)(VS.80).aspx
> データの永続性 セッション状態変数に配置されたデータは、インターネット インフォメーション サービス (IIS: Internet Information Services) の
> 再起動やワーカー プロセスの再起動があっても失われずに保持されます。
> これは、データが別のプロセス領域に格納されているためです。
> また、セッション状態のデータは、Web ファームや Web ガーデン内のプロセスなど、複数のプロセス間で保持できます。
ステートサーバを使って実現することをさも既定の動作であるかのように書いてる。
セッションについて理解していればこれが宣伝広告的なものだと分かるんだけど、そうじゃないと鵜呑みにしちゃうよね。
こうして騙される人が増えると。
ちなみに昔はセッションなんて使わないのが常識だった。
せいぜい持たせて認証情報くらい。
これなら吹っ飛んでもログインしなおす流れを明示できる。
連続的な情報はCookieやページ内にhiddenで突っ込んだりしたもんだ。
ASP.NETでもContextやViewStateで十分な情報はそれを使った方が良いよ。
953:nobodyさん
10/03/09 23:48:19
>インプロセス モード
>アプリケーションの Web.config ファイルの processModel 要素で
>webGarden 属性に true を設定して Web ガーデン モードを有効にしている場合は、
>InProc セッション状態モードを使用しないでください。
>このモードを使用すると、同じセッションに対する要求がそれぞれ異なるワーカー プロセスによって処理される場合、
>データ消失が発生する可能性があります。
954:nobodyさん
10/03/10 00:37:48
>>953
引用のつもりなら出自を明確に
あと、そのコピペじゃ何を言いたいのか全然分かんない
InProcで消えるパターンが他にもあるよと言いたいだけ?
955:nobodyさん
10/03/10 18:32:27
>>952
それプロファイルプロバイダを利用した場合の長所って書いてあるだろ
本当にここはレベルが低いな
956:nobodyさん
10/03/10 18:39:54
これはバグですか?
1.Visual Studio 2008 SP を起動
2.ファイル - 新しいプロジェクト - ASP.NET Webアプリケーション を選択して[OK]
.Net Framework 3.5 を設定
3.デザイン画面を表示
4.Panelコントロールを配置
5.panelコントロールの中にTextBoxコントロールを配置
6.TextBoxコントロールのプロパティウィンドウでTextプロパティに何か文字を入力し確定
7.そのままデバッグの開始
デフォルト表示されるはずの文字が表示されないのです。
ちなみにPanelに載せなければ正しく表示します。
3台のPCで試して3台とも再現しました。
957:nobodyさん
10/03/10 19:08:45
>>955
セッション状態とプロファイルプロパティは別物だし>952のリンク先でも
別セクションにわけて解説してある
プロファイルプロパイダは後者のことで、>952は前者のことだぞ
958:nobodyさん
10/03/10 21:04:55
ソース君必死(笑)
959:nobodyさん
10/03/10 22:21:17
>>956
つインシデント
960:nobodyさん
10/03/11 06:36:48
>>959
バグみたいなことに金払うの?
961:nobodyさん
10/03/11 09:02:01
>>960
製品の不具合に起因することはインシデント返還される
暫定的な非公開hotfixと引き換えにすることもできる
バグが確定的なら無料の窓口でも対応してくれる
962:nobodyさん
10/03/11 13:09:39
いきなりSRする必要はない
まずは無料サポートに問い合わせて対応させる
バグならその旨連絡来るし、そうじゃなさそうならSRをすすめられる
963:nobodyさん
10/03/16 13:14:56
○A ○B ○AorB
_______
| |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
A|B |C
―――
1|12|aaa
2|13|bbb
3|14|ccc
4|15|ddd
GridViewで作成した表に、ラジオボタンで選択した行をテキストボックスに
入力した文字列で検索した結果を、表示したいと考えています。
具体的には、ラジオボタンでAを選択した状態でテキストボックスに1と入れると、GridViewに
A|B |C
―――
1|12|aaa
が表示され、ラジオボタンでAorBを選択した状態でテキストボックスに3と入れると、GridViewに
A|B |C
―――
2|13|bbb
3|14|ccc
と表示したいのですが。
ご意見いただけないでしょうか。
964:nobodyさん
10/03/16 13:40:43
GridView.Rows.Countになるまでグリグリ探してあれば
その行をVisible=Flaseで良いんじゃね?
965:nobodyさん
10/03/16 15:07:09
ラジオボタンとテキストボックスから動的に条件組み立てて、
その条件で元データをフィルタする
俺なら動的にSQL組み立てるが、ポストバック間で元データのデータセットを
保持してるならRowFilter使うのもありかな
966:nobodyさん
10/03/16 15:30:51
GridViewを使わない
967:nobodyさん
10/03/16 15:47:11
どこにDB使ってると書いてあるんだ?w
968:nobodyさん
10/03/16 16:18:41
俺なら動的にSQL組み立てるが
訂正
俺ならDB使って動的にSQL組み立てるが
969:nobodyさん
10/03/16 16:25:51
処理タイミングで結構話が変わる気がする
「テキストボックスに3と入れると」ってのはクライアントサイドで完結して欲しいって意図も感じる
どこかに「絞り込み」ってボタンがあって、普通にポストバックしていいなら結構楽な話だけど、クライアントサイドで完結したいならこめんどう
Ajaxにしてグリッドだけサーバの結果で書き換えるって手もあると思う