- - PR -
[ASP.NET]Requestをクラスの中で使うには
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-10-15 15:29
お世話になっております。
現在、VS2003を使ったWebシステムの構築を行っております。 その中で、「WEBにアクセスしてきた人のログをとろう」と考え クライアントのIPアドレスを取得して、日付と共にファイルに書き出そうと 処理を書いたのまではうまくいったのですが 「いろんなページで使うから、書き出し処理をクラスにしよう」 と考えました。 が、クラスに切り出しただけではうまくいかず、難航しています。 とりあえず何がだめなのかを一行ずつ分析していった結果 「Request.UserHostAddress」が値を返していないようなのです。 単純な部分だけ書きます ↓これはうまくいきました [WebForm1.aspx.vb] Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '--IPアドレスを取得し表示します。 Response.Write(Request.UserHostAddress) End Sub これを下記のように変えました [class1.vb] Public Class Class1 Inherits System.Web.UI.Page Public Function viewip() Return Request.UserHostAddress() End Function End Class [WebForm1.aspx.vb] Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load dim o_class as Class1 dim s_ip as String = o_class.viewip '--IPアドレスを取得し表示します。 Response.Write(s_ip) End Sub ビルドはエラーにならないのですが、実行時 「オブジェクト参照がオブジェクト インスタンスに設定されていません」 と表示されてしまいます。 申し訳ございませんが、よろしくお願いいたします。 | ||||
|
投稿日時: 2006-10-15 15:48
System.Web.HttpContext.Current に現在の要求に対するオブジェクトが格納されています。
http://msdn2.microsoft.com/ja-jp/library/system.web.httpcontext.current.aspx | ||||
|
投稿日時: 2006-10-15 15:54
なぜかわからんってこと? インスタンスが何たるかがわかっていないみたい。 Requestってのがどのメンバなのかもわかっていないみたい。 Class1でRequestと書くとどのRequestを表すのかわかっていないみたい。 Class1が継承されているからこそReq(略 以上がちょっと気になったところ。 いい機会だから勉強した方がいいんじゃねーかなと思う。 | ||||
|
投稿日時: 2006-10-15 19:58
かるあ様、ぶさいくろう様
教えていただいてありがとうございました。 おかげさまでうまくいきました。 [class1.vb] Public Class Class1 Public Function viewip(ByVal o_req As System.Web.HttpRequest) Return o_req.UserHostAddress End Function End Class [WebForm1.aspx.vb] Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '--Class1のインスタンスを生成 Dim o_class As New Class1 '--IPアドレスを取得し表示 Dim s_ip As String = o_class.viewip(System.Web.HttpContext.Current.Request) Response.Write(s_ip) End Sub ぶさいくろう様 おっしゃるとおりです。まだ駆け出しでオブジェクト指向の意味すらよくわかって いない状態ですが、これから学んでいきたいと思っております。 | ||||
|
投稿日時: 2006-10-15 20:32
余計なお世話ですけど、System.Web.HttpContext.Current 使うんだったらこのような方がいいですね。
IPアドレスを取得するだけの関数だったら意味ないなぁと思うんですが、実際はいろいろ処理が入るんですよね。 _________________ 囚人のジレンマな日々 |
1