WebzobのAzureにzipファイルをアップロード中に問題が発生しました。WebClientのアップロードファイルのサイズ制限
を書く:zipファイルのサイズが10メガバイト未満のとき、私はこの例外を取得し、より大きなファイルをアップロードしようとするとストリームがサポートされていない同時IO読み取りまたは操作
すべてはしかし、うまくいきます
スタック:System.Net.ConnectStream.InternalWrite(ブール非同期、バイト[]バッファのInt32に
- オブジェクト、のInt32のサイズ、AsyncCallbackコールバックをオフセット状態)System.Net.ConnectStream.Writeで
- (バイト[]バッファのInt32オフセット、のInt32のサイズ)System.Net.WebClient.UploadBitsState.WriteBytesで
- ()
System.Net.WebClient.UploadBitsで- (WebRequestクラス要求、ストリームreadStream、バイト[]バッファ、チャンクのInt32、バイト[]ヘッダ、バイト[]フッタ、CompletionDelegate uploadCompletionDelegate、CompletionDelegate downloadCompletionDelegate、AsyncOperation asyncOp)システムで
- 。 Net.WebClient.UploadFile(Uriアドレス、Stringメソッド、Stringファイル名)
は、ここに私のコードです:
MyWebClient
私はタイムアウトを設定する必要が
WebClient
の実装です
var client = new MyWebClient
{
Credentials = new NetworkCredential(webSite.UserName, webSite.Password),
};
client.Headers.Add(HttpRequestHeader.ContentType, "application/zip");
client.Headers.Add("Content-Disposition", $"attachment; filename={appFile}");
var response = client.UploadFile(uploadUri, "PUT", filePath);
:
private class MyWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest w = base.GetWebRequest(uri);
w.Timeout = 20 * 60 * 1000;
return w;
}
}
サイズの制限ができる場所上の任意のアイデアは?クライアント側であり、.NETフレームワークに依存していないと確信しています。
EDITソリューションは、HttpWebRequestのにWebクライアントをキャストしてfalseにAllowWriteStreamBuffering強制した :
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest w = base.GetWebRequest(uri);
w.Timeout = 20 * 60 * 1000;
var httpRequest = w as HttpWebRequest;
if (httpRequest != null)
{
httpRequest.AllowWriteStreamBuffering = false;
}
return w;
}
WebClientをコード内の他の場所で再利用していますか? – Nasreddine
@Nasreddine私はクライアントを他の場所で使用していません –
@ ehsan-sajjad、これは重複した質問ではありません。 –