- PR -

VB.NETでCookieの値を取得したい

投稿者投稿内容
osamu
ベテラン
会議室デビュー日: 2004/03/22
投稿数: 67
投稿日時: 2004-12-16 16:32
VB.NET初心者です。
現在、ASP(VBスクリプト)で稼動している掲示板があります。
その掲示板にログインする際に、認証を必要とします。
その認証情報(社員番号)はCookieとして保持しております。
その状態で掲示板にログインし、掲示板の中にURLを埋め込みその
URLを押したらまた認証が行われるといったシステムを作成したいのです。

その二度目の認証は、VB.NETで作ろうとしており
一度目の認証で保持しているCookie(社員番号)を元に
処理しようと思っています。
デバッグしたところ、認証の判定処理はうまくできているのですが
どうもASPで取得したCookieをASP.NETで受け取るやり方がまずいようなのです。

1回目の認証(ASP)で
Response.Cookies("protest")("nm") = nm

のように設定しています。「nm」が社員番号にあたります。

そして2回目の認証(ASP.NET)では
syain_cd=Request.Cookies("protest")("nm")

というように、String型の変数syain_cdにCookie情報を
格納しようとしております。
ここが違うように思えるのですが、このような仕様の場合の
Cookie情報の受け渡しについてお教えいただけますでしょうか。

全体仕様として・・・
掲示板に入る際に一度目の認証
掲示板に入り、特定のスレッドを閲覧する際に二度目の認証
一度目と二度目の認証には同じCookie情報を使用する。(判定処理が異なる)
このような場合の、一度目の認証(ASP)で使用した情報の
二度目の認証(ASP.NET)への受け渡し方法について教えていただきたいということです。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-12-16 16:55
なにを知りたいのか判りにくいです。
もうちょい整理して。

> ASPで取得したCookieをASP.NETで受け取るやり方がまずいようなのです。

まずい、というのはエラーになっているということですか。
Requestではなく、Responseを使う場所ってことかもしれないです。

_________________
たつごろー
codeseek
こみゅぷらす
osamu
ベテラン
会議室デビュー日: 2004/03/22
投稿数: 67
投稿日時: 2004-12-16 17:09
エラーになってることはなってるんですがローカル環境での
テストは行えないため、サーバでテストしてるのでデバッグできない
状態('/' アプリケーションでサーバー エラーが発生しました。ランタイムエラー
と出るだけ)です。
しかし、Cookieを使用せずに、テキストボックスに社員番号を入力し
その社員番号をもとに判定するシステムをテストしたところ正常に
処理されたため、Cookieの情報がうまく受け渡されていないと思ったのです。

String型の変数syain_cdにCookie情報として保持しているnm(社員番号)が
ちゃんと渡されれば、判定処理に流れることになるのでうまくいくと思うのです。
その渡し方をお伺いしたいと思っております。
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2004-12-16 17:11
まずは以下の確認を。

ブラウザが送信しているか?

横取り丸/InetSpy(フリーウエア)で見れば分かります。

ASP.NETが受け取っているか?

Request.Cookies内のすべてのCookieを列挙する方法
osamu
ベテラン
会議室デビュー日: 2004/03/22
投稿数: 67
投稿日時: 2004-12-17 11:37
まわりの人に質問して今まで
syain_cd=Request.Cookies("protest")("nm")

としていたのを
If Not Request.Cookies("protest") Is Nothing Then
Syain_Cd = Server.HtmlEncode(Request.Cookies("protest")("nm"))
End If

と変更しました。
なおかつ、デバッグできるようにサーバにて確認したところ
次のエラーが出ました。しかし、対応がよくわかりません・・・。

******************************************************************

構成にエラーがあります。
解析エラー メッセージ: アプリケーション レベルを超えて allowDefinition='MachineToApplication' として登録されているセクションを使うことはできません。このエラーは、仮想ディレクトリが IIS でアプリケーションとして構成されなかった場合に発生します。

行 36: Microsoft により提供される管理認証サービスを使用して実行されます。
行 37: -->
行 38: <authentication mode="Windows" />
行 39:

*************************************************************

あ、書き忘れましたが、その構成エラーは実際のaspxで出ているのではなく
Web.configでのエラーのようです。


[ メッセージ編集済み 編集者: osamu 編集日時 2004-12-17 11:53 ]
osamu
ベテラン
会議室デビュー日: 2004/03/22
投稿数: 67
投稿日時: 2004-12-17 12:01
何度もすいません。上の構成エラーについては単純にIISの設定を
していなかっただけで、IISの設定をしたところ、出なくなりました。

また、Cookieの受け渡しができているかどうかの判定のために

If Not Request.Cookies("protest") Is Nothing Then
Syain_Cd = Server.HtmlEncode(Request.Cookies("protest")("nm"))
Syain_Cd = "00" & Syain_Cd
Else
Server.Transfer("ng.html")
Exit Sub
End If

というようなコーディングをしました。
ng.htmlが表示された場合、Cookieの値が取得できてないということで
つくりました。
このようなコーディングをして、実行するとやはりCookie取得が
できていないようなのです・・・。
たつごろー
ぬし
会議室デビュー日: 2004/10/25
投稿数: 496
投稿日時: 2004-12-17 12:21
> If Not Request.Cookies("protest") Is Nothing Then
> Syain_Cd = Server.HtmlEncode(Request.Cookies("protest")("nm"))
> Syain_Cd = "00" & Syain_Cd
> Else
> Server.Transfer("ng.html")
> Exit Sub
> End If

これってどこに書いたのですか?
もう少し情報をください。
osamuさんの目の前で起こったことについて、前提となることを知らない人でも読めるかどうか再確認して投稿してくださいな。

_________________
たつごろー
codeseek
こみゅぷらす
osamu
ベテラン
会議室デビュー日: 2004/03/22
投稿数: 67
投稿日時: 2004-12-17 12:31
言葉足らずで申し訳ありません。
先程書かせていただいたIf文は、ページロード時のイベントとして
書きました。そもそも処理自体がページロード時のみなので。
ページロード時に認証判定を行い、飛ばすページを変えるという仕様です。
If文はページロード時イベントの一番最初(変数宣言のすぐ後)に書きました。
全体の流れとして

1、既に完成している認証付き掲示板にログイン
2、その中の特定のスレッドをクリック
3、そのスレッドの中にaspxへのリンクが埋め込まれている
4、そのリンクを押すと処理が実行される

<処理の中身>

A、先程書いたIf文にて、上記1で使ったCookieの値(社員番号)を取得。
B、取得した社員番号をもとに社員マスタをSQLで検索
C、検索したデータをもとに、認証OKかNGかの判定
D、判定に従いページを表示。

上記B〜Dはテストの結果、うまくいっているのですが
大事なAでつまずいているのです。
書かせていただいたIf文はAの部分の処理です。

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