合わせてフレームワークを.NetFramework4.6.1から.NetCore3.1に変更しました。
その際にHttpClient関連で不具合が発生し、エラーが発生するようになりました。
The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set.
以下のソースでエラーが発生していました。
var res = await client.GetAsync(url);
var src = await res.Content.ReadAsStringAsync();
ここの、ReadAsStringAsyncでエラーとなってしまいました。
この書き方がダメみたいですね。
以下のように修正しました。
var res = await client.GetAsync(url);
string src;
using (var sr = new StreamReader(await res.Content.ReadAsStreamAsync(), Encoding.GetEncoding("euc-jp")))
{
src = sr.ReadToEnd();
}
これでもさらにエラーが出ます。
System.ArgumentException: 'euc-jp' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method.
Parameter name: name
エラーの状況は違うようですが、以下のサイトを参考に修正します。
参考)ASP.NET CoreでShift_JISでCSV出力しようとしたら他ページのHTMLの中身が空になった件
.NetCoreではEncoding.GetEncodingは"shift_jis"や"euc-jp"はそのままでは使用できないそうです。
使用するには「CodePagesEncodingProvider」をNugetから追加します。
さらに、コンストラクタなどに以下を追加します。
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
これで、正常に動作するようになりました。