DOBON.NETプログラミング道掲示板

■35131 / 親記事)  ASP.NET WebApi内でXmlReader.Create(url)がタイムアウトする
  
□投稿者/ ぺんたごん 一般人(3回)-(2022/08/24(Wed) 15:26:59)
  • アイコン環境/言語:[C# .NET 4.6.x] 
    分類:[ASP.NET] 

    お世話になっております。
    
    表題のとおりですが、外部サーバ(https)のxmlファイルを読み込む
    ライブラリdllを作っています。
    これをWinFormsアプリから使用するとすんなり動くのですが
    ASP.NET WebApi2で作ったREST APIで使用すると
    かなり待った後タイムアウトします。
    →「リモート サーバーに接続できません(ry」
    
    開発環境はプロキシがあり、これを通さないと外部へ接続できないのですが
    WinFormsとWebApiとで動作が変わってしまうのは
    どうすれば対処できるのでしょうか。
    最近のググーるさんは指定した単語にちょっとでも引っかかると
    関係ない雑多な情報も全部拾って来るので苦戦してます。
    
    よろしくお願いいたします

マルチポストを報告
違反を報告
引用返信 削除キー/
■35132 / ResNo.1)  Re[1]: ASP.NET WebApi内でXmlReader.Create(url)がタイムアウトする
□投稿者/ 魔界の仮面弁士 大御所(1442回)-(2022/08/24(Wed) 16:20:59)
  • アイコンNo35131に返信(ぺんたごんさんの記事)
    > これをWinFormsアプリから使用するとすんなり動くのですが
    > ASP.NET WebApi2で作ったREST APIで使用すると

    プロキシ動作は検証したことがありませんが、.config の
     /configuration/system.net/defaultProxy
    の設定はどうなっていますか。( XmlReader.Create に影響するかは未確認 )

    特に設定していない場合、実行アカウントの OS 設定になるんじゃないかな…?

    WinForms はデスクトップ アカウントでの動作でしょうけれど、
    Web の方はそうではないでしょうし。
違反を報告
引用返信 削除キー/
■35133 / ResNo.2)  Re[2]: ASP.NET WebApi内でXmlReader.Create(url)がタイムアウトする
□投稿者/ ぺんたごん 一般人(4回)-(2022/08/24(Wed) 16:31:44)
  • アイコン返信ありがとうございます

    今回作ってるサービスのweb.configにはプロキシに関する設定は皆無です。
    インターネットオプションのプロキシ設定を引き継いでくれるものと思ってたのですが…

    こちらでもあれから調査を続けていて、
    IISのアプリケーションプールの動作するアカウントでインターネットオプションのプロキシ設定しておかないと
    あかん、という情報を見つけて、これはこれで有用なんですが
    今回VisualStudio+IIS Expressでのデバッグで
    現象が起きてるので、どうしたものかなと悩んでます。
    (この場合ログインしてるWindowsユーザで動作する気がしてます)

    もう少し調べてみます
違反を報告
引用返信 削除キー/
■35134 / ResNo.3)  Re[3]: ASP.NET WebApi内でXmlReader.Create(url)がタイムアウトする
□投稿者/ 魔界の仮面弁士 大御所(1443回)-(2022/08/24(Wed) 19:27:02)
  • アイコンNo35133に返信(ぺんたごんさんの記事)
    > 今回作ってるサービスのweb.configにはプロキシに関する設定は皆無です。
    web.config を設定してみた結果はどうでしたか?
    https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings

    追加の認証が必要な場合はこちら。
    https://qiita.com/kazumeat/items/9c1d7c9f6bb1ffe0951e


    > インターネットオプションのプロキシ設定を引き継いでくれるものと思ってたのですが…
    web.config のプロキシ設定が優先されると思いますが、
    未設定時には OS のプロキシ設定が使われるでしょうね。

    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    HKEY_USERS\<何某>\Software\Microsoft\Windows\CurrentVersion\Internet Settings
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings

    https://win2012r2.com/2019/02/12/post-498/
    https://win2012r2.com/2022/05/24/configure-proxy-of-service-account/


    > 今回VisualStudio+IIS Expressでのデバッグで
    > 現象が起きてるので、どうしたものかなと悩んでます。
    UAC が有効な場合は、IIS Express を管理者として実行してみるとか…?

    ※当方未確認です
違反を報告
引用返信 削除キー/
■35141 / ResNo.4)  Re[4]: ASP.NET WebApi内でXmlReader.Create(url)がタイムアウトする
□投稿者/ ぺんたごん 一般人(5回)-(2022/08/26(Fri) 15:15:21)
  • アイコン
    No35134に返信(魔界の仮面弁士さんの記事)
    
    結局アレからは色々試す時間がなかったのですが、
    XmlReader.Createに直接urlを指定するのではなく
    
    var req = WebRequest.Create(url);
    req.Proxy = WebRequest.GetSystemWebProxy(); //これ重要
    var resp = req.GetResponse();
    var xml = XmlReader.Create(resp.GetResponseStream());
    
    で動きました(破棄処理などは省略してます)
    なぜこれをデフォ動作としといてくれないのか…
    よくわかりませんが、とりあえずいったん解決といたします
    
    ありがとうございました
    

解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -