我试图通过请求将数据传递给Web API服务,这在我的本地工作正常。
但是当我在服务器上托管Web API时,它适用于一小组数据,但是当我通过请求传递大量数据并抛出附加异常时失败
我的网站.Config:
using (var webClient = new ExtendedWebClient())
{
//24 Hour Timeout
webClient.Timeout = 86400000;
string connectionString = "Data Source=" + txtServer.Text + ";Initial Catalog=" + txtDB.Text + ";User ID=" + txtUser.Text + ";Password=" + txtPwd.Text + ";Connect Timeout=30";
webClient.Headers.Add("data", "xyz");
webClient.Headers.Add("token", "ABC");
try
{
var boundary = Guid.NewGuid().ToString();
webClient.Headers.Add("Content-Type", "multipart/form-data; boundary=" + boundary);
var fileName = String.Format("Temp_File{0:ddMMyyyyHHmmssffff}{1}", DateTime.UtcNow, ".zip");
//zipping up the file
var memStream = ZipHandler.CreateStream(new List<string>() { @"C:\Files\File1.txt", @"C:\Files\File2.txt" });
var bdata = new Byte[memStream.Length];
memStream.Read(bdata, 0, bdata.Length);
memStream.Close();
memStream.Dispose();
//Sending the zipped File
var package = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"file\"; filename=\"{1}\"\r\nContent-Type: {2}\r\n\r\n{3}\r\n--{0}--\r\n", boundary, fileName, "application/octet-stream", webClient.Encoding.GetString(bdata));
var strResponse = System.Text.Encoding.Default.GetString(webClient.UploadData((txtPort.Text + "/Text"), "POST", webClient.Encoding.GetBytes(package)));
try
{
var response = Newtonsoft.Json.JsonConvert.DeserializeObject<ApiResponse>(strResponse);
if (response.StatusCode != 0)
{
MessageBox.Show("Failed.\nTrace:\n" + response.Description, "Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
MessageBox.Show("success!", "success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我的客户要求:
我正在使用WEBClient与服务进行交互
{{1}}
任何人都可以为我提供解决方案,我搜索了一些但无法解决我的问题。
答案 0 :(得分:0)
如果要发布大量数据,则必须在webconfig中指定请求限制,长度和执行最长时间。
注意:根据您的应用程序更改目标框架,在我的应用程序中为4.6.1,所以我只推出了它。
<requestLimits maxAllowedContentLength="2147483647" />
<httpRuntime targetFramework="4.6.1" maxRequestLength="2147483647" executionTimeout="1600" requestLengthDiskThreshold="2147483647" />