ファイルを読み込んで別のコンソールアプリケーションに送信し、それをByte配列に変換してからBase64文字列に変換します。この部分は正しく行われますが、アプリケーションで同じストリームが受信されると、それは操作され、有効なBase64文字列ではなくなります。いくつかのジャンク文字がストリームに導入されています。入力は有効なBase-64文字列ではありません。ベース以外の64文字が含まれています。
ストリームをバイトに変換する際に例外が発生するのは、です。 "入力には、ベース以外の64文字、2文字以上のパディング文字、または非白色の文字が含まれているため、有効なBase-64文字列ではありませんパディング文字「」の中の空白文字。サービスで
:アプリケーションで
[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;
}
:非常におそらくそれは+
と/
文字が-
と_
に変更されている修正をBase64に変換なってき
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);
おそらくこれは 'Encoding'に関係しています。 –
"ジャンク文字"が挿入されていることを知っていますか? –
更新されたコードが役立ちます。これで、あなたが送る文字列(つまりサービス上の 's')と受け取ったコンテンツ(' result.content')を見る必要があります。文字列全体を投稿する必要はありません。 –