前提・実現したいこと
ASP.NETは殆ど弄った事がなく、WISAサーバーの検証でHELLO WORLDをしたくらいです。
知人の会社で、イントラ用のWEBアプリが動いています。
サーバーの構成はWISAで、Windows Server IIS SQLServer ASP.NETとなっています。
確認しましたが、データははSQLServerにあり、LAN上のWindows7機のWEBブラウザでWEBアプリにより、閲覧、追加、修正、削除ができるようになっています。
サーバーのSQL Serverマネージャーでも確認しましたが、データはこれでまちがいないようです。
WEBアプリの開発元はとうに倒産して設計書も定義書も手元になく、なにがどうなって動いているのか判らないまま、数年来稼働している状態に陥っています。
このままブラックボックスではリプレースも依頼できないと困り果てている様子なので、とりあえずどういう仕組みで動いてるのか調べてみようという事になり、相手先の許可を得た上で、ASPのソースと、データベースのbak(数年前の古いもの)を提供してもらいました。
仮想のWindows Server上で、ASPファイルのフォルダの配置を相手先に合わせ、bakからデータを復元すると、相手先と同じように稼働するのが確認できています。
それでソースを読んでいけば、動作の仕組みが判るのではと思ったのですが、行き詰まってしまいました。
「知りもしないくせに手を出したお前が悪い」
という誹りは甘んじてお受けますが、データベースからどうやってデータを取りだしているのか、なにかヒントを頂けないでしょうか?
該当のソースコード
aspx
1<h3>ユーザー</h3> 2<asp:Repeater ID="UsersRep" runat="server"> 3<HeaderTemplate> 4<table border="1"> 5<tr><th>氏名</th><th>ログイン名</th><th>役割</th></tr> 6</HeaderTemplate> 7<ItemTemplate> 8<tr><td><%# Eval("DisplayName")%></td><td><%# Eval("Name") %></td><td><%# ProdDoc.GetRoleName((int)Eval("Role")) %></td></tr> 9</ItemTemplate> 10<FooterTemplate> 11</table> 12</FooterTemplate> 13</asp:Repeater> 14</body> 15</html>
Default.aspxにはこのような記述があって、Repeaterがデータベースとの接続のUsersRepを呼び出していて、Evalの部分がデータがある限り繰り返されるところは理解できたのですが、このUsersRepでの呼び出しがなにかよくわかりません。
aspx.cs
1public partial class LoginPage : System.Web.UI.Page 2{ 3 protected void Page_Load(object sender, EventArgs e) 4 { 5 Seed = DBObj.GetSeed("User") as User; 6 7 if (Session.IsNewSession) 8 Seed = DBObj.GetSeed("User") as User; 9 10 if ( IsPostBack ) return; 11 12 string loginName = Cookie.GetLoginName(this); 13 if ( loginName != null ) 14 { 15 this.LoginNameTB.Text = loginName; 16 StoreLoginNameChk.Checked = true; 17 } 18 else 19 { 20 StoreLoginNameChk.Checked = false; 21 } 22 IList<DBObj> users = Seed.LoadList("Role"); 23 UsersRep.DataSource = users; 24 UsersRep.DataBind(); 25 }
Default.aspx.cs にはこのように書かれているため、このUsersRep.DataSourceあたりでデータを取り込んでいるのでは? と想像するのですが、ブラウザで表示したとき、ユーザーとして表示されるユーザー一覧を格納したテーブル名称も出て来ませんし、SQLもありません。
修正依頼で、DBObjについて記述されたファイルを探すうちに気づいたのですが、
例えばデータベースにuserac1というテーブルがあって、データが20行ある場合、Default.aspxをブラウザから呼ぶと、そのuserac1のリスト20行が表示されているのに、全文検索で、aspxやaspx.csのフォルダを「userac1」のテキストで検索しても、ヒットが0件になります。
という事は、少なくともテキストとして閲覧できるプログラムソースの中では何処もuserac1を指示していないのに、実働するとuserac1を読みに行っていますから、ASP.NETでは、テキストで読める以外になにかデータベース定義のバイナリファイルが存在するのでしょうか?
御存知の方がいらっしゃいましたら、ご教示ください。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー