私の Outlook プラグインは、https 経由で大きなファイルを送信します。現在、クライアント側で Convert.ToBase64String() を使用し、IIS 側の http ハンドラーで Convert.FromBase64String() を使用しています。
これによりパフォーマンスの問題が発生し、SSL経由でデータを保護しているため、受信側でCPUパフォーマンスを犠牲にするエンコーディングを使用せずにhttps経由でバイト配列を変換する方法があるかどうかを本当に尋ねています.
私のクライアントコード:
string requestURL = "http://192.168.1.46/websvc/transfer.trn";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestURL);
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
// Chunk(buffer) is converted to Base64 string that will be convert to Bytes on the handler.
string requestParameters = @"fileName=" + fileName + @"&secretKey=testKey=" + @"¤tChunk=" + i + @"&totalChunks=" + totalChunks + @"&smGuid=" + smGuid +
"&data=" + HttpUtility.UrlEncode(Convert.ToBase64String(bytes));
// finally whole request will be converted to bytes that will be transferred to HttpHandler
byte[] byteData = Encoding.UTF8.GetBytes(requestParameters);
request.ContentLength = byteData.Length;
Stream writer = request.GetRequestStream();
writer.Write(byteData, 0, byteData.Length);
writer.Close();
// here we will receive the response from HttpHandler
StreamReader stIn = new StreamReader(request.GetResponse().GetResponseStream());
string strResponse = stIn.ReadToEnd();
stIn.Close();
パフォーマンスの問題があるサーバー コード:
byte[] buffer = Convert.FromBase64String(context.Request.Form["data"]); //