ファイルを読み取り、バイト配列に変換してから Base64 文字列に変換した後、別のコンソール アプリケーションに送信する REST サービスがあります。この部分は機能しますが、同じストリームがアプリケーションで受信されると、操作されて有効な Base64 文字列ではなくなります。一部のジャンク キャラクターがストリームに導入されています。
ストリームを Byte に戻すときに受け取る例外は次のとおりです。
入力は有効な Base-64 文字列ではありません。base 64 以外の文字、3 つ以上の埋め込み文字、または埋め込み文字の中に空白以外の文字が含まれているためです。
サービス中:
[WebGet(UriTemplate = "ReadFile/Convert", ResponseFormat = WebMessageFormat.Json)]
public string ExportToExcel()
{
string filetoexport = "D:\\SomeFile.xls";
byte[] data = File.ReadAllBytes(filetoexport);
var s = Convert.ToBase64String(data);
return s;
}
申請時:
var client = new RestClient("http://localhost:56877/User/");
var request = new RestRequest("ReadFile/Convert", RestSharp.Method.GET);
request.AddHeader("Accept", "application/Json");
request.AddHeader("Content-Type", "application/Json");
request.OnBeforeDeserialization = resp => {resp.ContentType = "application/Json";};
var result = client.Execute(request);
byte[] d = Convert.FromBase64String(result.Content);