##HTTPエラーコード417ってなんだ?
ってかんじでしばらくハマった。
Expectation failed(417)は、拡張ステータスコードが使えない時にサーバーが返すらしい。(拡張ステータスコード?って場合は参考リンク先へ)
C#でHTTPリクエストを書くと自動でヘッダにExpect: 100-Continueがついてしまい、サーバーに断られてしまったということだ。サーバーはIISなのだが、関係ないのでしょうか・・・
それで、コードに以下を追加することで解消する。
sample.cs
using System.Net;
using System.Net.Http;
ServicePointManager.Expect100Continue = false; // HTTPエラー(417)対応
var req = new HttpRequestMessage(HttpMethod.Post, TARGET_URL);
req.Content = new StringContent(msg, Encoding.UTF8, "text/xml");
HttpClient client = new HttpClient();
var res = await client.SendAsync(req);
##参考リンク
WebRequestのExpectにデフォルトで100-continueがつく件
http://d.hatena.ne.jp/tkuro/20110208/1297181393
【エラーコード】HTTPステータスコードの原因一覧
https://liginc.co.jp/web/programming/164003