none
Webページ上のボタンクリック後のデバッグ方法について RRS feed

  • 質問

  • VS2005Windows アプリをデバッグしているのですが、そこで使っているWebBrowserでWebページを表示して、その表示ページ上でのSubmitボタンの動作がうまく行かないという現象が出ました。

    OS WindowsXpProffesional
    開発環境 VS2005プロフェッショナルEdition
    アプリケーション Windows アプリ(VB、C#のProjectを混在させて開発中)
    WebBrowser VB Project で利用のもの

    現象 
    ・Webページ(例.Googleのイニシャルページなど)にある「検索」ボタンを押したときに、検索結果ページを返して来ず何のページ遷移も行われない(Yahoo検索でも同様の現象)
    ・このとき BreakPoint を置いて調べると、WebBrowserNavigating イベントは立っていない
    ・ボタンではない、普通の href リンクは正しくジャンプする
    ・同じOSの別のPC(Note型Pc)において行うと同じアプリケーションでも正しく検索動作を行う、ページ遷移が行われる
    InternetExplorerで表示すればそれらの不具合は起こらない

    HTML上の該当するボタンの箇所:
    <input name=btnG type=submit  value="Google 検索" style=height:1.8em>

    1.このような場合、何が原因として可能性が高そうでしょうか。

    2.また、このWebページの動作をそのWindows アプリ上において調べたいときには、そのまま同じVSデバッグ環境上でそのWebページのソースファイル(htmlファイル)をいっしょにデバッグするようなことは可能でしょうか?

    VS2005はプロフェッショナルEditionですので、Webアプリも開発可能だとは思うのですが、現在のWindowsアプリケーションにおいてだけ不具合を起こしているため、このデバッグ環境において統合的に調べたく思います。

    よろしくお願いします。

    2009年4月24日 5:58

回答

  • とりあえず正しく動作するようになったようで何よりです。ただ原因不明というのがおっしゃられるように不安要因ですね・・・
    ちなみにリソースはメモリ量とは直接関係ありませんので、いずれにしてもDisposeもしくはusingを使って、確実にリソースを解放するようにして下さい。

    .NET Frameworkのソースコード閲覧の件ですが、VS2005でも可能なようです。ひょっとすると何かの役に立つかもしれません。

    【.NET】Visual Studio 2005/2008で.NET Frameworkのソースを見ながらステップ実行する
    http://www.r-nakai.com/archives/56


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク sk7474 2009年6月11日 5:18
    2009年4月26日 14:50
    モデレータ
  • これは関係ないでしょうか?

    [IE] Input type = file 属性の入力フォームにて submit を行っても Web サーバーから反応がない
    http://support.microsoft.com/kb/890981/ja

    以下を満たす必要があるため、可能性としてはとても低いと思いますが、ゼロではないと思いました。

    ・ Input Type="file"を表示ページ内で使用されている。
    ・ 不具合が発生した状況では、パスの入力が正しくなかった。
    ・ 不具合が発生しない状況では、パスは正しく入力されている。

    • 回答としてマーク sk7474 2009年6月11日 5:18
    2009年4月27日 3:52

すべての返信

  • 補足追加

    確認のために、別の単純なForm一枚だけのWindowsアプリケーションを作成して、そこにWebBrowserを載せてチェックしてみたところ、そこではこうした現象は起きず、InternetExplorerでの動作と同様の正常動作を確認することができました。

    ということは、アプリケーション内部の構成に関係したなんらかの原因があるものと考えられましたが、それをどのようにして調べたらよいかがわかればありがたく。

    通常こうしたことは起こらないわけですが、デバッグ方法としてどのようにしていけばよいでしょう?よろしくお願い致しします。

    2009年4月24日 7:04
  • う~ん、切り分けが難しそうですね。とりあえずWebBrowserはリソースを食うので、確実にDispose()を行っているか確かめてみて下さい。リソース不足かもしれません・・・

    VS2008だとWebBrowserのソースコードへステップインできると思うのですが・・・


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年4月25日 15:10
    モデレータ
  • >trapemiya様

    >う~ん、切り分けが難しそうですね。とりあえずWebBrowserはリソースを食うので、確実にDispose()を行っているか確かめてみて下さい。リソース不足かもしれません・・・
    >VS2008だとWebBrowserのソースコードへステップインできると思うのですが・・・

    リソース不足の可能性については、一応メモリは空きが1G以上あるようなので心配はしていなかったのですが、Dispose()されているかどうかは調べてみます。

    「VS2008だとWebBrowserのソースコードへステップインできる」としたらそちらに移行すればデバッグは可能になりそうですね・・・。

    ご指導、ありがとうございました。また調べてみます。

    2009年4月26日 2:39
  • 本日、上記した後、数時間後に、思いついてこんなことをして見ました。

    調べて見ましたところ、このアプリケーションには凝ったコンポーネントが使われていて、そこでHook系の動作を使っていたようで、そこでもしかして、と思いまして ~Hook~ と名に持つ箇所をサーチしてその名前でメソッドのあるところすべてでConsole.WriteLine() でそこに来たという印を表示してみた(動作そのものは不変で)ところ、問題だった「検索」ボタンの動作が正しく行われてしまいました!

    あれれ??ということで、、ではもう一度前のように、Console.WriteLine() をコメントアウトしてデバッグ環境と非デバッグ環境の両方でやってみたところ、やはり正しく動作してしまうのでしたが、これはGoogle検索でもYahoo検索でも同じでした。

    元々正常動作していた方のNote型PCでは正常のまま変わらず。

    ということで、原因がわからないまま、問題のあったPCでの動作が正常になってしまい、やったことはこれらだけなのですが、これだとまた異常になるかもしれないので直ったとは言えませんでした。

    今後また異常になるかもしれないので引き続きチェックしてみて行きますが、、

    もしかしたら、この1日ぐらいの間にWindowsXpProfessionalの自動更新か何か、あるいはセキュリティソフトの自動更新か何かでOSの内部動作が若干変化してしまったせいなのか、とも思ったりもしましたものの、理由はよくわかりません。以降、また報告させて戴きたく。

    trapemiya様、ご指導ご親切にありがとうございました。またよろしくお願い致します。

    2009年4月26日 13:52
  • とりあえず正しく動作するようになったようで何よりです。ただ原因不明というのがおっしゃられるように不安要因ですね・・・
    ちなみにリソースはメモリ量とは直接関係ありませんので、いずれにしてもDisposeもしくはusingを使って、確実にリソースを解放するようにして下さい。

    .NET Frameworkのソースコード閲覧の件ですが、VS2005でも可能なようです。ひょっとすると何かの役に立つかもしれません。

    【.NET】Visual Studio 2005/2008で.NET Frameworkのソースを見ながらステップ実行する
    http://www.r-nakai.com/archives/56


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク sk7474 2009年6月11日 5:18
    2009年4月26日 14:50
    モデレータ
  • これは関係ないでしょうか?

    [IE] Input type = file 属性の入力フォームにて submit を行っても Web サーバーから反応がない
    http://support.microsoft.com/kb/890981/ja

    以下を満たす必要があるため、可能性としてはとても低いと思いますが、ゼロではないと思いました。

    ・ Input Type="file"を表示ページ内で使用されている。
    ・ 不具合が発生した状況では、パスの入力が正しくなかった。
    ・ 不具合が発生しない状況では、パスは正しく入力されている。

    • 回答としてマーク sk7474 2009年6月11日 5:18
    2009年4月27日 3:52
  • >trapemiya様

    >リソースはメモリ量とは直接関係ありませんので、いずれにしてもDisposeもしくはusingを使って、確実にリソースを解放するようにして下さい。

    不要になったオブジェクトは確実にDisposeするようにとのこと、守って参りたく。
    また、.NET Frameworkのソースコード閲覧の件、VS2005でも可能とのこと、情報下さりありがとうございました。
    時間でき次第、そちらの方向でも調べてみたく思います。

    またご指導のほどよろしくお願い致します!
    2009年4月27日 7:54
  • >TH01様

    Input type = file 属性の場合の件、教えて戴きありがとうございました。

    調べてみたところ、現在のGoogleやYahooのWebサイト検索のページにはこの属性の部分はないようでした。ただ昨日以前のソースを保存しておかなかったため、その部分が変化したかどうかはわかりません。やはり取っておくべきだったのかもしれません。

    一応、IEのバージョンが7であることと、Formに単純にWebBrowserコントロールを一つ貼っただけのサンプルでは現象が出ていなかったことから、おそらくは問題のアプリケーション固有の問題であったとは思われましたが、また引き続きチェックして行きたいと思います。

    ご助言、参考になりました。またよろしくお願いします!
    2009年4月27日 8:06
  • こんにちは。中川俊輔です。

    trapemiyaさん、TH01さん、回答ありがとうございます。

    VS2005利用者さん、フォーラムのご利用ありがとうございます。

    原因が明確に判明したわけではなかったようですが、とても参考になる情報だと思いましたので、
    勝手ながらtrapemiyaさん、TH01さんの回答へ回答マークをつけさせていただきました。

    今後ともフォーラムをよろしくおねがいします。
    それでは!
    マイクロソフト株式会社 フォーラム オペレータ 中川 俊輔
    2009年6月11日 5:23