- PR -

ASP.NETでこのコンテキストでは応答が有効ではありませんのエラー

1
投稿者投稿内容
gare
会議室デビュー日: 2003/07/08
投稿数: 5
投稿日時: 2003-07-08 22:07
ASP.NETで開発を始めたばかりです。
あるセッションの値が何もないならログイン画面に戻るという処理を共通化したいので
クラスを作成しPage_Loadでcallしてるのですがブラウザで実行とすると
response.redirect("default.aspx")の行で「このコンテキストでは応答が有効ではありません。」とエラーがでます。
クラスを作成するのも始めてなので何か必要なものが抜けてると思うのですがわかりません。
どなたか教えてください。

作成したクラス
Public Class CommonClass
Inherits System.Web.UI.Page
 Protected Friend Sub check_login()
If Len(Session("userID")) = 0 And Len(Session("password")) = 0 Then
Response.Redirect("default.aspx", True)
End If
End Sub
End Class

呼び出しているaspx
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Dim x As New tubakisample.CommonClass()
Call x.check_login()
Else

End If
End Sub
あすかぜ
常連さん
会議室デビュー日: 2003/04/22
投稿数: 21
投稿日時: 2003-07-09 21:55
Redirect したいのは 呼び出している側の aspx ファイルのレスポンスですよね。
「CommonClass」の Response はこれとはまったく別物なので、これを Redirect しても意味がありません。(言葉下手ですみません)
Redirect の処理を共通化するのであれば、Response を関数の引数として渡すようにすればいいと思います。

Public Class CommonClass
Protected Friend Sub check_login(HttpResponse res)
If Len(Session("userID")) = 0 And Len(Session("password")) = 0 Then
res.Redirect("default.aspx", True)
End If
End Sub
End Class

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Not IsPostBack Then
Dim x As New tubakisample.CommonClass()
Call x.check_login(Response)
Else
End If
End Sub

という感じではどうでしょう?
gare
会議室デビュー日: 2003/07/08
投稿数: 5
投稿日時: 2003-07-10 09:08
あすかぜさん、ありがとうございます。Response処理が別物で動作しているのは
なんとなく判ってたのですが、それを共通化する処理をどうするのかが判らなかったので
勉強になりました。さっそくやってみます。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-07-10 10:31
HttpContext.Current.Response.Redirect("default.aspx", True);

とすればわざわざ引数で渡さなくてもできると思いますよ。
gare
会議室デビュー日: 2003/07/08
投稿数: 5
投稿日時: 2003-07-10 11:10
ひでさん、ありがとうございます。
あずかぜさんのでやってみて成功しましたが、ひでさんのもやってみます。
勉強になりました。
1

スキルアップ/キャリアアップ(JOB@IT)