??
ヘッダーイメージ 本文へジャンプ
日記

2015年09月08日 10時45分
.NET の WebClient の接続が遅い
仕事で、http を使った通信のクライアント処理を組むことになったので
お手軽に、.NET の WebClient を使って組んでみた

最初に出会った問題は、ヘッダーエラーとのこと・・・
サーバー側で妙なヘッダーが有ると、チェックしてエクセプションを上げてくれるみたい

「余計なことする・・・」

まぁ問題はサーバー側なので、直してもらうしかないんですが
クライアントで無視する方法が アプリケーションの exe.config に

<?xml version="1.0" encoding="utf-8" ?>
 <configuration>
   <system.net>
     <settings>
       <httpWebRequest useUnsafeHeaderParsing="true" />
     </settings>
   </system.net>
 </configuration>
こんなのを書けばいいみたい

でも、他の所も無視するようになってしまうので
VBでこんなコーディングをすれば、アプリケーションで制御できた

Dim a As Assembly = Assembly.GetAssembly  (GetType(System.Net.Configuration.SettingsSection))
Dim t As Type =  a.GetType("System.Net.Configuration.SettingsSectionInternal")
Dim o As Object = t.InvokeMember("Section", BindingFlags.Static Or BindingFlags.GetProperty   Or BindingFlags.NonPublic,
  Nothing, Nothing, New Object() {})
Dim f As FieldInfo = t.GetField("useUnsafeHeaderParsing",
  BindingFlags.NonPublic Or BindingFlags.Instance)
Dim r As Boolean = DirectCast(f.GetValue(o), Boolean)

f.SetValue(o, b)
                                    

上記で適当なファンクションを作るもよしって感じです
5行目のが設定前の値なんで、必要なければ5行目は不要です

で、第二の難関は、接続に若干時間がかかる

数秒ほど・・・

まぁ、待って待てない時間じゃないけど・・・

で、以前 FTP の実装したときに FtpWebRequest を使って遅かったことを思い出した
どうやって解決したのか、調べると proxy を、無効にしたら解決したみたい

同じように 「webClient.Proxy = Nothing」 としてみたら、瞬時に接続するようになった!

同じなのね!

PROXY を探して遅かったのか?
とすると、もともとPROXY使ってるところは、遅くないんか?





・VB の DataGridView
・VBScript の CreateObject
・VBS で ZIP圧縮してみる
・VISTAのタスクが動かない
・Windows2008 のタスクが動かない
・.NET の WebClient の接続が遅い

カテゴリー:日記
目次へ戻る



フッターイメージ