まず、ArcGIS の C# SDKだが、Windows の proxy の設定を見て動作する。
インターネット・オプションの proxy から除外するリストも設定しないと、
https://foo.local-ad.bar.co.jp:6443 へのアクセスに proxy を介しようとしてはまる。
設定すべきは、
https://[arcgis-server-machine];https://localhostnetsh winhttp set proxy の情報を見ているのか、実行ユーザのインターネット・オプションの情報を見ているのかは定かではない(調べてません)
さて、Linux系のツールでは、環境変数
http_proxy https_proxy no_proxyの3種類を参照するものが主流だ。C# SDK もこれに対応しているのだが、詰めが甘い。
なんと no_proxy を見ないで、http_proxy, https_proxy が設定されている場合は、インターネット・オプションの proxy の設定を上書きし、proxyから除外するリストをクリアする。
no_proxy を設定していても見ないで無条件にクリアするので、Windows の環境変数に https_proxy=http://foo:8080 などと設定しようものなら、6443ポート宛てのアクセスをproxyを介しようとして WebAdaptorが動作しなくなる
さて、ここまでは序の口
色々動かしていると、動かないものが出てくる。今回は PrintingTool のサービスだった。こいつ、ArcGIS Server に設定した proxy 情報を見ないし、Portal for ArcGIS に設定した proxy 情報を見ないし、netsh winhttp set proxy で設定した proxy 情報も見ない。https_proxy 等の環境変数は、前述した問題があるので使用できない。
では、何を設定すれば proxy の情報を見てくれるのか?
arcgis server をサービスとして実行している arcgis というサービス用のウィンドウズ・アカウントのインターネット・オプションの情報に縛られる
PsExecを使って、サービス用アカウントのインターネット・オプションを設定すれば動作する
C:\> psexec64 -u "[localMachineName]\[arcgis]" -p password cmd.exe別ウィンドウが立ち上がるのでインターネット・オプションを開いて Proxy の設定を行う。
C:\Windows\system32> inetcpl.cpl C:\WIndows\system32> exitこれで、ちゃんと proxy を見てくれる。
