Page.User

Page.Userは、アクセスしているユーザ情報を取得する。

Page.User プロパティ (System.Web.UI) | Microsoft Docs
第18回 Windows認証を実装したWebアプリケーション:連載 プログラミングASP.NET ―ASP.NETによるWebアプリケーション実践開発講座― (1/3 ページ) - @IT

Windows認証をかけたページにアクセスして、Page.Userの実体を探る。

authdirフォルダをつくる
authdirフォルダをつくる

authdirフォルダをつくる

この位置に。
この位置に。

この位置に。

IISマネージャー
IISマネージャー

IISマネージャー。

仮想ディレクトリの追加
仮想ディレクトリの追加

仮想ディレクトリの追加。

さきほどのパスをセット
さきほどのパスをセット

さきほどのパスをセット。

authdir
authdir

authdir

認証
認証

認証

Windows認証を有効に
Windows認証を有効に

Windows認証を有効に。

匿名認証は無効に
匿名認証は無効に

匿名認証は無効に。
これだけかとおもって、ページ作って、アクセスしたら、エラーが出た。

take some notes 【開発メモ AWS WEB IoT etc】 仮想ディレクトリが IIS でアプリケーションとして構成されなかった

アプリケーションへの変換が要るのか
アプリケーションへの変換が要るのか

アプリケーションへの変換が要るのか。

こうして
こうして

こうして。

2つのファイル用意
2つのファイル用意

2つのファイル用意。
web.configは、

mode="Windows"。
Page_.aspxは、

Userの型名をTitleに表示。

これを入力してアクセス
これを入力してアクセス

これを入力してアクセス。

Windowsアカウント入力
Windowsアカウント入力

Windowsアカウント入力、

アクセス出来たら、Titleに型名が出ている。
アクセス出来たら、Titleに型名が出ている。

アクセス出来たら、Titleに型名が出ている。

Sample/aspnet/Page/User/src/Page_ at master · bg1bgst333/Sample · GitHub

HttpContext.Handler

HttpServerUtility.Transferでのページ遷移で、HttpContext.Handlerを使うと、遷移前のページのオブジェクトにアクセスできる。

HttpContext.Handler プロパティ (System.Web) | Microsoft Docs
第16回 ASP.NETにおけるページの遷移:連載 プログラミングASP.NET ―ASP.NETによるWebアプリケーション実践開発講座― (2/4 ページ) - @IT

Default.aspxで、

button1を押したら、textBox1のTextを、messageに格納し、Transfer。
Default.aspx.csで、

messageを空に初期化。
NextPage.aspxで、

渡されたmessageをlabel1で表示する。
NextPage.aspx.csで、

Context.Handlerを_Defaultにキャストして、d.messageでmessageにアクセスできるので、label1.Textにセット。

Button1を押すと、
Button1を押すと、

Button1を押すと、

ページは遷移するが、messageは引き継がれる。
ページは遷移するが、messageは引き継がれる。

ページは遷移するが、messageは引き継がれる。
(本当は、NextPage.aspxに@Referenceディレクティブを付けないと、できないらしいが、できてしまった・・・。何故だろう・・・。)

Sample/aspnet/HttpContext/Handler/src/HttpContext_ at master · bg1bgst333/Sample · GitHub

HttpContext

HttpContextは、様々なHTTPに関する情報を持っている。

HttpContext クラス (System.Web) | Microsoft Docs

Default.aspxで、

こうすれば、

サーバのユーザー名も出せる。
サーバのユーザー名も出せる。

サーバのユーザー名も出せる。
(ドメイン名 + "\" + ユーザ名、になっている模様。)

Sample/aspnet/HttpContext/HttpContext/src/HttpContext_ at master · bg1bgst333/Sample · GitHub

Page.Context

Page.Contextは、ページに関連付けられているコンテキスト(HTTPコンテキスト)を取得する。

Page.Context プロパティ (System.Web.UI) | Microsoft Docs

Default.aspxで、

こうすると、

実体はHttpContext
実体はHttpContext

実体はHttpContext。

Sample/aspnet/Page/Context/src/Page_ at master · bg1bgst333/Sample · GitHub

CCustomControl::OnCreate

CCustomControl::OnCreateは既にあるのだが、これをCCustomControl::Createから呼び出すようにする。
ウィンドウ作成時のWM_CREATEは、BUTTONにしろ、EDITにしろ、既定のウィンドウクラスのウィンドウプロシージャのものが、差し替え前に呼ばれてしまう。
そして、差し替え後は2度と呼ばれないから、疑似的にCWindow::Createで生成後にCCustomControl::OnCreateを呼び出すようにする。

こんな感じ。
もちろんOnCreateで0以外を返したら、破棄するようにする。
このまま起動しても表面上の動作は変わらず。

Test/winapi/CCustomControl/OnCreate/src/CCustomControl at master · bg1bgst333/Test · GitHub

CCustomControl::OnDestroy

CCustomControl::OnDestroyで修正するのは、1つだけ。

ウィンドウマップから、自身のウィンドウを削除するだけ。
動作は変わらない。

Test/winapi/CCustomControl/OnDestroy/src/CCustomControl at master · bg1bgst333/Test · GitHub

HttpServerUtility.Transfer

HttpServerUtility.Transferもページ遷移をするメソッド。

HttpServerUtility.Transfer メソッド (System.Web) | Microsoft Docs
第16回 ASP.NETにおけるページの遷移:連載 プログラミングASP.NET ―ASP.NETによるWebアプリケーション実践開発講座― (1/4 ページ) - @IT

HttpResponse.Redirectは、302を返してそのセッションはいったん終わり、ブラウザがリダイレクト先にアクセスするのに対し、
HttpServerUtility.Transferは、サーバ側で遷移先に処理が移り、遷移先のレスポンスを返す。
Default.aspxで、

こうで、
Default.aspx.csで、

こう。
NextPageを追加し、
NextPage.aspxは、

こうで、
NextPage.aspx.csは、

こう。

302を返さず、そのまま遷移先に切り替わるので、セッションは1つで、URLバーはDefault.aspxのままだが、タイトルと内容はNextPage.aspxを返してる。
302を返さず、そのまま遷移先に切り替わるので、セッションは1つで、URLバーはDefault.aspxのままだが、タイトルと内容はNextPage.aspxを返してる。

302を返さず、そのまま遷移先に切り替わるので、セッションは1つで、URLバーはDefault.aspxのままだが、タイトルと内容はNextPage.aspxを返してる。

デバッグ出力はこんな感じ
デバッグ出力はこんな感じ

デバッグ出力はこんな感じ。

Sample/aspnet/HttpServerUtility/Transfer/src/HttpServerUtility_ at master · bg1bgst333/Sample · GitHub