C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: C#の処理の順番とsessionについて教えてください


(過去ログ 14 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■4583 / inTopicNo.1)  C#の処理の順番とsessionについて教えてください
  
□投稿者/ matu (1回)-(2007/06/19(Tue) 11:54:39)

分類:[C# (ASP.NET)] 

ご教授よろしくお願いいたします


@Response.Write("<script language=javascript>alert('登録完了');</script>");
Response.Redirect("Registpage.aspx?cno="+Convert.ToInt32(Request["cno"]));
で実行するとページ移動だけで登録完了のダイアログが表示されません。
デバッグすると処理はされているので、実行の順番が違うからだと思いますけど
どうしたらダイアログが出るのかわかりません。

Asessionで値を別ページに渡すときは値を渡せるのですが、targetで別ウィンドウに
値を渡すと値を渡せていないときがあります。その場合何度試してもいかず、一度全部の
ウィンドウを閉じ、開きなおして試すと直る場合がありました。
セッションの時間はIISもASPも長めにしているので短時間できれるのがわかりません。
親ウィンドウのほうからだと別ページにいけるのでログインの認証が切れてるわけでは
ありませんでした。

お願いします
引用返信 編集キー/
■4585 / inTopicNo.2)  Re[1]: C#の処理の順番とsessionについて教えてください
□投稿者/ Mr.T (62回)-(2007/06/19(Tue) 12:29:22)
Mr.Tです、こんにちは。

No4583 (matu さん) に返信
> ご教授よろしくお願いいたします
>
>
> @Response.Write("<script language=javascript>alert('登録完了');</script>");
> Response.Redirect("Registpage.aspx?cno="+Convert.ToInt32(Request["cno"]));
> で実行するとページ移動だけで登録完了のダイアログが表示されません。
> デバッグすると処理はされているので、実行の順番が違うからだと思いますけど
> どうしたらダイアログが出るのかわかりません。

そりゃ、そうですね。
<script language=javascript>alert('登録完了');</script>"
これが、実行されるのはいつなのか。
> Response.Redirect("Registpage.aspx?cno="+Convert.ToInt32(Request["cno"]));
これが実行されるのは、いつなのか。

その違いがわかりますか?登録完了のアラートを出力するのは、クライアントのブラウザが
行います。しかし、Ridirectを行うのはサーバ側の処理です。
Response.Writeでは、クライアントにデータを返すだけです。その内容までは、感知しません。

で、目的のことをされるためには、クライアントスクリプト側でページ遷移を指定
してやる必要があります。

簡単になら、location.href = "http://***"という形でもOKでしょう。ただし、この場合
GETパラメータでの送信になるので、POSTで送りたいという場合は、Formを利用して、
クライアントスクリプトで、form.submit()のような書き方をしてやらないといけません。

それをダイアログ表示直後に、出力すればよいと思います。

> Asessionで値を別ページに渡すときは値を渡せるのですが、targetで別ウィンドウに
> 値を渡すと値を渡せていないときがあります。その場合何度試してもいかず、一度全部の

その渡せていないとき、ということは渡せるときがある、その二つがあるなら、
どこかに違いがありそうですが。単純な話、どこかでSession.Abondon
とかしていませんか?

引用返信 編集キー/
■4587 / inTopicNo.3)  Re[2]: C#の処理の順番とsessionについて教えてください
□投稿者/ matu (2回)-(2007/06/19(Tue) 13:22:29)
No4585 (Mr.T さん) に返信
> Mr.Tです、こんにちは。
>
> ■No4583 (matu さん) に返信
>>ご教授よろしくお願いいたします
>>
>>
>>@Response.Write("<script language=javascript>alert('登録完了');</script>");
>>Response.Redirect("Registpage.aspx?cno="+Convert.ToInt32(Request["cno"]));
>>で実行するとページ移動だけで登録完了のダイアログが表示されません。
>>デバッグすると処理はされているので、実行の順番が違うからだと思いますけど
>>どうしたらダイアログが出るのかわかりません。
>
> そりゃ、そうですね。
> <script language=javascript>alert('登録完了');</script>"
> これが、実行されるのはいつなのか。
>>Response.Redirect("Registpage.aspx?cno="+Convert.ToInt32(Request["cno"]));
> これが実行されるのは、いつなのか。
>
> その違いがわかりますか?登録完了のアラートを出力するのは、クライアントのブラウザが
> 行います。しかし、Ridirectを行うのはサーバ側の処理です。
> Response.Writeでは、クライアントにデータを返すだけです。その内容までは、感知しません。
>
> で、目的のことをされるためには、クライアントスクリプト側でページ遷移を指定
> してやる必要があります。
>
> 簡単になら、location.href = "http://***"という形でもOKでしょう。ただし、この場合
> GETパラメータでの送信になるので、POSTで送りたいという場合は、Formを利用して、
> クライアントスクリプトで、form.submit()のような書き方をしてやらないといけません。
>
> それをダイアログ表示直後に、出力すればよいと思います。
返答ありがとうございます
ASPの値をクエリで渡すことができるんですか?
ちょっと書き方がわかりません。


>
>>Asessionで値を別ページに渡すときは値を渡せるのですが、targetで別ウィンドウに
>>値を渡すと値を渡せていないときがあります。その場合何度試してもいかず、一度全部の
>
> その渡せていないとき、ということは渡せるときがある、その二つがあるなら、
> どこかに違いがありそうですが。単純な話、どこかでSession.Abondon
> とかしていませんか?

していませんでした。
>
引用返信 編集キー/
■4594 / inTopicNo.4)  Re[3]: C#の処理の順番とsessionについて教えてください
□投稿者/ Mr.T (63回)-(2007/06/19(Tue) 18:03:35)
Mr.Tです、こんにちは。

> 返答ありがとうございます
> ASPの値をクエリで渡すことができるんですか?
> ちょっと書き方がわかりません。

ASPの値という書き方では意味がわかりませんが、matuさんは自分でやってますよ>おそらく
というのも、

<script language=javascript>
alert('登録完了');
location.href='http://Registpage.aspx?cno=****'
</script>
こういう文字列をつくって、Response.writeすればよいですよね。
そうすれば、alertを押すまではページ遷移しません。

> >>Asessionで値を別ページに渡すときは値を渡せるのですが、targetで別ウィンドウに
> >>値を渡すと値を渡せていないときがあります。その場合何度試してもいかず、一度全部の
>>
>>その渡せていないとき、ということは渡せるときがある、その二つがあるなら、
>>どこかに違いがありそうですが。単純な話、どこかでSession.Abondon
>>とかしていませんか?
>
> していませんでした。

では、SessionIDを確認してください。HttpSessionState.SessionIDプロパティです。
これが違う場合は、別セッションになっています。

私も実際に現象にぶちあたったことはないのですが、IE6.0のころだとクライアント側で
window.Openした場合にSessionが引き継がれない、という情報を見たことがあります。
#確認まではしていないのですが。
#また、今回は関係ないと思いますが、IEだとHost名にハイフンがあったりするとSessionが引き継がれない
#とあったはずです。

具体的にどういうリクエストを行ったときに発生するのか、発生しないのか、
場合わけしてみてはどうでしょう。

引用返信 編集キー/
■4599 / inTopicNo.5)  Re[4]: C#の処理の順番とsessionについて教えてください
□投稿者/ matu (4回)-(2007/06/19(Tue) 20:15:14)
No4594 (Mr.T さん) に返信
> Mr.Tです、こんにちは。

Mr.Tさん返答ありがとうございます

>>返答ありがとうございます
>>ASPの値をクエリで渡すことができるんですか?
>>ちょっと書き方がわかりません。
>
> ASPの値という書き方では意味がわかりませんが、matuさんは自分でやってますよ>おそらく
> というのも、
>
> <script language=javascript>
> alert('登録完了');
> location.href='http://Registpage.aspx?cno=****'
> </script>
> こういう文字列をつくって、Response.writeすればよいですよね。
> そうすれば、alertを押すまではページ遷移しません。
>

はい、出来ましたありがとうございました。Request["cno"])で”が使われているので
うまく言ってなかったのもわかりました。変数にしたら、解決できました。


>>>>Asessionで値を別ページに渡すときは値を渡せるのですが、targetで別ウィンドウに
>>>>値を渡すと値を渡せていないときがあります。その場合何度試してもいかず、一度全部の
> >>
> >>その渡せていないとき、ということは渡せるときがある、その二つがあるなら、
> >>どこかに違いがありそうですが。単純な話、どこかでSession.Abondon
> >>とかしていませんか?
>>
>>していませんでした。
>
> では、SessionIDを確認してください。HttpSessionState.SessionIDプロパティです。
> これが違う場合は、別セッションになっています。
>
> 私も実際に現象にぶちあたったことはないのですが、IE6.0のころだとクライアント側で
> window.Openした場合にSessionが引き継がれない、という情報を見たことがあります。
> #確認まではしていないのですが。
> #また、今回は関係ないと思いますが、IEだとHost名にハイフンがあったりするとSessionが引き継がれない
> #とあったはずです。
>
> 具体的にどういうリクエストを行ったときに発生するのか、発生しないのか、
> 場合わけしてみてはどうでしょう。
>


ハイフンを使っていたのでとりあえずなしで試してみます
ありがとうございました
引用返信 編集キー/
■4607 / inTopicNo.6)  Re[5]: C#の処理の順番とsessionについて教えてください
□投稿者/ Mr.T (64回)-(2007/06/20(Wed) 05:26:29)
Mr.Tです、こんにちは。

>>#また、今回は関係ないと思いますが、IEだとHost名にハイフンがあったりするとSessionが引き継がれない
>>#とあったはずです。
>>

ごめんなさい。おもいっきり間違えてました。
ハイフンじゃなくて、アンダースコア(_)です。
この場合、http://support.microsoft.com/default.aspx?scid=kb;ja;316112
に該当したときの話なんで、問題は別のところじゃないかと思います。
#あう、すみません。
引用返信 編集キー/
■4675 / inTopicNo.7)  Re[1]: C#の処理の順番とsessionについて教えてください
□投稿者/ Jitta (358回)-(2007/06/21(Thu) 21:55:37)
Jitta さんの Web サイト
No4583 (matu さん) に返信
 MSDN を参照して欲しい。。。
http://msdn2.microsoft.com/ja-jp/library/t9dwyts4(VS.80).aspx
> Redirect は End を呼び出し、これは完了時に ThreadAbortException 例外を生成します。

 Response.Write しても、Flush するまではバッファに溜まっているだけで、クライアントには送られていません。
Response.Redirect すると、そこで実行が打ち切られ、バッファが捨てられ、http の、、、何番だっけ?redirect することを示すコードが送られます。

 あと、Response.Write は、できるだけ使わない方が良い。
使う場所によっては HTML が崩れるから。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -