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

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

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

Re[7]: SSL状態のクリアの実装


(過去ログ 103 を表示中)

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

■61250 / inTopicNo.1)  SSL状態のクリアの実装
  
□投稿者/ Gaofa (1回)-(2011/08/07(Sun) 12:20:42)

分類:[VB.NET/VB2005 以降] 


VB2008でWebBrowserクラスを使って、SSL認証のサイトを表示するプログラムを作成しています。

そのサイトへ異なるIDでログイン、ログアウトを繰り返すと、約2分近く待たされることがあります。

これでは使い物にならないので、色々とやってみたところ、プログラムを動作させながら、IE6にある
SSL状態のクリアボタンを押すと、全然待たされずにログイン、ログアウトが出来るようになりました。
(http://support.microsoft.com/?scid=kb;ja;290345&spid=2073&sid=283)

そこで、このIEにある「SSL状態のクリア」と同等の機能を実装したいのですが、
方法が分かりません。
アドバイス頂けると助かります。

よろしくお願いします。



引用返信 編集キー/
■61256 / inTopicNo.2)  Re[1]: SSL状態のクリアの実装
□投稿者/ 魔界の仮面弁士 (2291回)-(2011/08/08(Mon) 02:47:15)
No61250 (Gaofa さん) に返信
> これでは使い物にならないので、色々とやってみたところ、プログラムを動作させながら、IE6にある
> SSL状態のクリアボタンを押すと、全然待たされずにログイン、ログアウトが出来るようになりました。
そういった動作をするSSL認証のサイトを知らないので試せませんが、JavaScript から
 document.execCommand("ClearAuthenticationCache", false);
とすればクリアされる可能性があるかと思います。(未検証)
http://msdn.microsoft.com/en-us/library/ms536419%28v=VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms533049%28v=VS.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms536979%28v=VS.85%29.aspx

で。仮に上記でクリアされるのだとすれば、WebBrowser からは
HtmlDocument.ExecCommand メソッドで同じ結果となる…かもしれないと予想。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmldocument.execcommand.aspx
引用返信 編集キー/
■61309 / inTopicNo.3)  Re[2]: SSL状態のクリアの実装
□投稿者/ Gaofa (2回)-(2011/08/08(Mon) 22:16:29)
No61256 (魔界の仮面弁士 さん) に返信

アドバイス有り難うございます。本当に感謝です!

> そういった動作をするSSL認証のサイトを知らないので試せませんが、JavaScript から
>  document.execCommand("ClearAuthenticationCache", false);
> とすればクリアされる可能性があるかと思います。(未検証)

サイトはFC2です。
http://fc2.com/

早速、JavaScriptから実行してみましたが、変な現象となりました。
1発目のクリアは成功したのですが、2発目以降は全くクリアされていないような感じです。
VB2008で作成したプログラムは走らせたまま試しにIE6を起動しなおして再度JavaScriptを
実行するとクリア出来ているようですが、やはりIE6を起動したまま連続でクリアしても
クリアされていないようです。


> で。仮に上記でクリアされるのだとすれば、WebBrowser からは
> HtmlDocument.ExecCommand メソッドで同じ結果となる…かもしれないと予想。

次のような感じで書いてみましたが、クリアされていないみたいです。
WebBrowser1.Document.ExecCommand("ClearAuthenticationCache", False, vbNull)

このメソッドと同じなんですよね?
http://msdn.microsoft.com/en-us/library/ms536979.aspx

あと一歩の様なのですが、うまくいきません。
どうしてでしょうか。



引用返信 編集キー/
■61323 / inTopicNo.4)  Re[3]: SSL状態のクリアの実装
□投稿者/ 魔界の仮面弁士 (2295回)-(2011/08/09(Tue) 10:31:38)
No61309 (Gaofa さん) に返信
> サイトはFC2です。
試せるアカウントを作っていないので、どちらにせよ検証できません。m(_ _)m すみません。

> 1発目のクリアは成功したのですが、2発目以降は全くクリアされていないような感じです。
具体的には、どういう状態になるのでしょうか。

> WebBrowser1.Document.ExecCommand("ClearAuthenticationCache", False, vbNull)
vbNull ではなく、Missing.Value を渡してください。

vbNull という値は、Integer 型の 1 を意味します。(正確には VariantType.Null )
C 言語でいう所の NULL 値を表す物ではありませんので注意してください。

ちなみに、アンマネージオブジェクト経由で
 WebBrowser1.Document.DomDocument.execCommand("ClearAuthenticationCache", False)
と記述する事も出来ます。まぁ、DomDocument を経由させない方が望ましいですけれどね。

> このメソッドと同じなんですよね?
> http://msdn.microsoft.com/en-us/library/ms536979.aspx
正確には、「このメソッド」ではなく「このコマンド」ですね。
引用返信 編集キー/
■61346 / inTopicNo.5)  Re[4]: SSL状態のクリアの実装
□投稿者/ Gaofa (3回)-(2011/08/09(Tue) 22:20:30)
No61323 (魔界の仮面弁士 さん) に返信

何とか実装する事が出来ました。
本当に有り難うございました。

今まではサイトにログインし、その後ログアウトしてから
WebBrowser1.Document.ExecCommand("ClearAuthenticationCache", False, VariantType.Null)
を実行していたのですが、
それをログアウト直前に変更した所、クリアする事が出来ました。

IE6での場合は、どこでもクリアボタンを押せばクリア出来たので、
WebBrowserでも同じだという思い込みがありました。

これでまた完成度が上がりました。本当に感謝です。








解決済み
引用返信 編集キー/
■61347 / inTopicNo.6)  Re[5]: SSL状態のクリアの実装
□投稿者/ 魔界の仮面弁士 (2298回)-(2011/08/09(Tue) 23:28:24)
No61346 (Gaofa さん) に返信
> WebBrowser1.Document.ExecCommand("ClearAuthenticationCache", False, VariantType.Null)

第三引数(value引数)に指定する値は、指定するコマンドによって異なりますが、
少なくともClearAuthenticationCache が求める物は vbNull や VariantType.Null ではありません。

前回の回答の繰り返しになりますが、value を必要としないコマンドに対しては
Nothing もしくは Missing.Value あるいは Type.Missing を渡してみてください。
引用返信 編集キー/
■61349 / inTopicNo.7)  Re[6]: SSL状態のクリアの実装
□投稿者/ Gaofa (4回)-(2011/08/10(Wed) 00:19:41)
2011/08/10(Wed) 21:45:32 編集(投稿者)

No61347 (魔界の仮面弁士 さん) に返信
> ■No61346 (Gaofa さん) に返信
>>WebBrowser1.Document.ExecCommand("ClearAuthenticationCache", False, VariantType.Null)
>
> 第三引数(value引数)に指定する値は、指定するコマンドによって異なりますが、
> 少なくともClearAuthenticationCache が求める物は vbNull や VariantType.Null ではありません。
>
> 前回の回答の繰り返しになりますが、value を必要としないコマンドに対しては
> Nothing もしくは Missing.Value あるいは Type.Missing を渡してみてください。

何度も有り難うございます。
私は基本的な事が分かっていないようですね。

実は、最初はNothing をセットしていたのですが、結果には影響なかったので、
vbNull や VariantType.Null にしてしまいました。

感謝です。


解決済み
引用返信 編集キー/
■61506 / inTopicNo.8)  Re[7]: SSL状態のクリアの実装
□投稿者/ Gaofa (5回)-(2011/08/17(Wed) 17:26:25)

すみません、継続質問です。
一度は解決したと思ったのですが、その後、また同じ現象で悩んでいます。

引き続きアドバイス頂けると助かります。

現象は過去の状況と同じです。

>> 1発目のクリアは成功したのですが、2発目以降は全くクリアされていないような感じです。
>具体的には、どういう状態になるのでしょうか。

WebBrowserで同じサイトに違うアカウントでログイン、ログアウトを繰り返すと、
一度、ログアウトしてから、次に違うアカウントでログインすると約2分程度ログイン状態で待たされてしまいます。

しかし、同時にIEを立ち上げて、WebBrowserでログアウトしたのを確認後、IEの「SSL状態のクリア」ボタンを押してクリアすると
WebBrowser側でほとんど待たされることなくログイン出来ます。

どうも、ClearAuthenticationCacheコマンドは、IEにある「SSL状態のクリア」と同じ機能を実現していないようです。

アドバイスよろしくお願いいたします。





引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -