- - PR -
プロキシキャッシュを利用しない方法
1
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-31 17:22
現在、C#でC/Sのシステムを作成しております。
.NETで開発したアプリケーションの起動前に、サーバにファイルチェックに行き 新しいDLLがあればダウンロードしてアプリケーションに反映するという処理を WebClient.DownloadFileを用いて実装しています。 ところが、ダウンロード先のサイトにアクセスに行く際、クライアント側でプロキシを設定しているとプロキシキャッシュにより、最新のモジュールがダウンロードできないという問題が発生しています。 プロキシの設定はクライアントにより、またプロキシを経由しないとサイトにアクセスできない場合もあるかと思いますので 「プロキシはクライアントで設定されていればそれを使用し、かつプロキシキャッシュは使用しない」 という実装がロジックレベルでできるのでしょうか。 このような問題は皆さんも経験される可能性があると思うのですが、どのように解決 されているのでしょうか。 ご存知の方はご教授いただけませんでしょうか。 よろしくお願いします。 | ||||||||||||||||
|
投稿日時: 2004-01-02 22:48
あまり詳しい話題ではないのですが。
proxyサーバの設定を変更する必要があるのではないでしょうか。 たとえば、ウェブブラウザにもキャッシュがありますが、そのキャッシュは、要求先のほうが新しければ破棄されるような設定があります。proxyの、キャッシュ更新タイミングが間違っているように思います。 | ||||||||||||||||
|
投稿日時: 2004-01-03 00:50
Jittaさん、お返事ありがとうございます。
Proxyサーバの設定はおかしいとは思っているのですが、会社のプロキシサーバのため、 設定を変更するのは難しいんです。 なんとかロジックで解決できればと思い、いろいろ調べてみたのですが ダウンロード先のURLの最後に「#」や「?」をつけることで プロキシサーバのキャッシュを見に行かなくなるそうなので その方法を使って 動作確認してみたいと思っております。 また、どうやらConfigファイルで設定するとプロキシを使用しないように設定できるそうなので、その方法ご存知の方がいらしたら教えていただけないでしょうか。 | ||||||||||||||||
|
投稿日時: 2004-03-18 19:25
すみません。つまらない質問をさせて下さい。
プロキシ経由でWebClient.DownloadFileを使って バイナリーファイルをダウンロードするには どのようにすればよいでしょうか? 言語はVB.NET2003です。 よろしくご教授をお願いいたします。 [ メッセージ編集済み 編集者: babo 編集日時 2004-03-18 19:26 ] | ||||||||||||||||
|
投稿日時: 2004-03-19 08:43
す〜〜〜っかり忘れていました。というか、年始でお休み中だったので、埋もれてしまっていました、というのが正解か。ごめんなさい。 その後、解決されたでしょうか? 私が理解しているプロキシサーバは、 対象サーバ − プロキシ − クライアント と、対象への間にはいるので、対象サーバの方で「プロキシを見るな」という設定はできないような?クライアント自身も「キャッシュ」を持っているので、その「キャッシュ」に対して有効期間を設けることはできます。そうすると、「戻る」や「再読込」したときに、「有効期間が切れています。もう一度提出しますか」のようなメッセージが出ますが。 ん?ならば、その「有効期間」を設定していれば、プロキシサーバのキャッシュも更新される?私が見つけることができたのは、IISの設定で、仮想ディレクトリのプロパティを開き、「HTTPヘッダー」タブの「コンテンツに有効期限を設定する」チェックボックスと、そのグループボックスです。 >baboさん 上に書いたように、クライアントが「このプロキシを経由してインターネットに接続する」と定義されているので、プロキシ上にファイルがあれば、それをダウンロードすると思います。 ##### ところで、「プロクシ」?「プロキシ」?「串」というから、「プロクシ」と思っていたのだが??? ATOK17の和英辞書は、どちらもproxyに変換してくれました。 | ||||||||||||||||
|
投稿日時: 2004-03-19 09:14
私もバタバタしており書き込めておりませんでした。
もうしわけございません<(_ _)> 上記質問、解決いたしました。 アプリケーション構成ファイルに下記のように記述すると プロキシを経由しないでアクセスが可能です。 <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.net> <defaultProxy> <bypasslist> <add address="〜〜" /> </bypasslist> </defaultProxy> </system.net> </configuration> bypasslistについての解説は下記にあります ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/cpgenref/html/gngrfbypasslistelement.htm ##### 「プロクシ」か「プロキシ」か・・・ たぶん「X」を「エックス」と読むか、年配の方がよく使う「エッキス」と読むかの違いですかね | ||||||||||||||||
|
投稿日時: 2004-03-19 10:37
Jittaさん、お返事ありがとうございます。
私の質問の仕方が悪かったです。ごめんなさい。 私がご教授頂きたいのはコード的な質問でした WebRequestクラスでは Dim myWebRequest As WebRequest = WebRequest.Create("URL") Dim myProxy As New WebProxy("URL:Port") myWebRequest.Proxy = myProxy Dim myWebResponse As WebResponse = myWebRequest.GetResponse() としてプロキシを設定する様に WebClientではプロキシをどのように設定すれば良いか?というものでした。 WebClient.DownloadFile("URL", "Path")を実行すると例外エラーが発生します。 "基になる接続が閉じられました : リモート サーバーに接続できません。" これはプロキシを経由していないためと考えていました。 開発環境ではプロキシを経由しないと外部へ接続できないようになっています。 また、プロキシ経由は開発要件でもあります。 WebResponseクラスでバイナリーファイルを取得する方法があるのでしょうか? ##### 個人的にですが発音は「プロクシ」、表記は「プロキシ」で使ってます。 「プロクシ」の方が馴染みがあるのですが 「プロキシ」の方が一般的と認識しています^^ | ||||||||||||||||
|
投稿日時: 2004-03-19 11:03
MSDNには、
とありますので、WebClientを使用するためには、WebRequestのインスタンスが必要なのではないでしょうか? 一通り、WebClientのメンバを眺めてみましたが、WebRequestを設定するようなものはありませんね。または、WebClientでは、内部でWebRequestを作ってアクセスしている、という意味でしょうか。 「データの要求」というトピックに、
とあります。プロクシ経由は「複雑なトランザクション」の部類にはいるのかもしれません。 |
1