MS04-032 が一番大きいかな。
IEからWindowsUpdateを実行してみると、DirectX 9.0c も更新した方がよさげなので redistributable のやつをダウンロードして各マシンに展開した。手元以外のマシンのWindowsUpdateはSUS経由で明日か明後日に適用予定。
これだけの数のIPアドレスブラックリストは管理しきれないなあ。 whitelist 作って知らないドメインからのリファラは毎回自分で追加ぐらいの方がいいかもしれない。
index.aspxから次のページに移動
Server.Transfer("nextpage.aspx");
nextpage.aspxの先頭に
<%@ Reference Page="index.aspx" %>
とかやっておくと、index.aspxに結びついたクラスに定義された「プロパティ」を参照できるようになる。 1つのWebページをクラスにマッピングしてしまう、ってのは概念としては分かりやすいな。 VS.Netデフォルトだとまんま "index" というクラス名で若干気持ち悪い。 いっそ大文字でページ名=aspxのファイル名を開始するというローカルルールにしてしまうのがいいかもしれない。 そうすればクラス名が大文字から始まってRuby使いとしては気分よくソースが見られる。
SQLサーバへの接続について、SQLConnection,SqlDataCommand,SQLDataAdapter,カスタマイズされたDataSetまでは
VS.Netでへろへろと作れたけど、
HTTPで受け取った値をSQLのパラメータとして渡す方法を探すのに苦労した。SQL使うのに「とりあえず全部」ってシチュエーションはほとんどないだろ。
VS.NetでSQLCommandのプロパティにあるSELECT文を、ウィザード経由で更新すると、インスタンスへのパラメータの追加も勝手にやってくれる。
DataSetとDataGridのバインドもDataGridのプロパティビルダでお気軽作成だ。
なんで手で書いたコードは以下の部分だけだった。分かってしまえば超簡単。
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
aIndex = (indexClass)Context.Handler; // index.aspxで入力した値を取り出す
sqlSelectCommand1.Parameters["@fromDate"].Value = aIndex.fromDate;
sqlSelectCommand1.Parameters["@toDate"].Value = aIndex.toDate;
sqlSelectCommand1.Parameters["@busyoCD"].Value = aIndex.busyoCD;
sqlDataAdapter1.Fill(dSet1); // SQLを実行してDataSetに流しこむ
DataGrid1.DataBind();
}
}