1

私は使用Process.Start("firefox.exe", "http://localhost/page.aspx"); し、ページが失敗したかどうかをどのように知ることができますか? または、HttpWebRequest、HttpWebResponse ページが失敗するかどうかを知る方法は?

私が使うとき

HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("somepage.aspx");
HttpWebResponse loWebResponse = (HttpWebResponse)myReq.GetResponse();
Console.Write("{0},{1}",loWebResponse.StatusCode, loWebResponse.StatusDescription);

エラーの詳細を返すにはどうすればよいですか?

追加のプラグインやフレームワークは必要ありません。この問題を.netだけで選びたい

任意のアイデアください

4

4 に答える 4

4

Process.Start の代わりに Watin を使用して firefox を自動化します。適切に何が起こっているかを監視できるブラウザ自動化フレームワークです。

http://watin.sourceforge.net/

編集: Google Webdriver も参照してください http://google-opensource.blogspot.com/2009/05/introducing-webdriver.html

于 2009-12-14T12:25:58.517 に答える
2

子プロセスを生成するのは非常に難しく、おそらく各ブラウザー固有の API を使用する必要があります (たとえば、FF と IE では同じではありません)。

多くの場合、exe が既存のインスタンスを検出し、そこにリクエストを転送することは役に立ちません (したがって、適切な exe でページがまだリクエストされていないため、終了コードを信頼することはできません)。

個人的には、このシナリオで特定のブラウザーを想定しないようにしています。URLを起動するだけです:

Process.Start("http://somesite.com");

これにより、ユーザーの既定のブラウザーが使用されます。ただし、それが表示されることを期待する必要があります-多くの作業なしに外部から(確実かつ確実に)チェックすることはできません。

もう 1 つのオプションは、自分でデータを読み取ることです ( WebClient.Download*) - ただし、これには、複雑な Cookie、ログイン、ユーザー エージェントの認識などに問題がある可能性があります。

于 2009-12-14T12:27:42.897 に答える
1

これを確認するには、HttpWebRequest クラスまたは WebClient クラスを使用します。URL が存在しない場合、 Process.Start が何かを返すとは思わない。

于 2009-12-14T12:39:25.947 に答える
0

このフォームでページを開始しないでください。代わりに、http://localhost:<port>/wrapper.htmlロードhttp://localhost/page.aspxしてから または のいずれかhttp://localhost:<port>/pass.htmlを行うローカルを作成しますhttp://localhost:<port>/fail.html。localhost: アプリによって実装される単純な HTTP サーバー インターフェースです。

Javascript は、ブラウザの外側にある API よりもはるかに標準的なブラウザの内側に API を提供するという考えです。wrapper.html の Javascript は、後続のリソースと同じサーバーおよびポートから取得されるため、これは現在のブラウザーの同一オリジン ポリシーを満たす必要があります。

于 2009-12-14T13:08:18.387 に答える