我寫了一個簡單的測試WEB API將docx文件轉換爲pdf(通過使用第三方庫)。代碼如下:WEBAPI停止響應請求
[Route("PDFConvert/Convert")]
[HttpPost]
public IHttpActionResult ConvertFile(string name)
{
var content = Request.Content.ReadAsStreamAsync().Result;
try
{
if (content != null)
{
using (MemoryStream ms = new MemoryStream())
{
content.CopyTo(ms);
Converter.Convert(ms.ToArray(), @".docx", @"c:\pdftest\" + name + @".pdf");
}
}
else
{
return Content(HttpStatusCode.InternalServerError, "No source file supplied.");
}
}
catch (Exception ex)
{
return InternalServerError(new Exception(ex.Message));
}
return Ok("File " + name + ".docx has been converted.");
}
此代碼適用於單個調用。
然後我寫了一些測試代碼在控制檯長期計劃模擬有很多請求擊中API,下面的代碼:
for (int i = 1; i < 101; i++)
{
var filestream = File.OpenRead(@"c:\pdftest\" + i.ToString() + @".docx");
test(filestream, i.ToString());
}
static void test(FileStream fs, string id)
{
var content = new StreamContent(fs);
var client = new HttpClient();
//post to web api
var response = client.PostAsync("http://localhost/WebAPI.PDFConvertion/PDFConvert/Convert?name=" + id, content);
Console.WriteLine("File Name: " + id + ".pdf");
client.Dispose();
}
此Web API是在IIS 7.5中託管的所有默認設置。
現在出現這個問題:在轉換某些文件(所有原始docx文件都是相同的,只是不同的文件名)後,整個過程停止。
在我的測試中,如果原產地文件的大小是大(> 1M),它總是將37個文件後停止,如果原產地文件尺寸較小(如20KB),它總是69
後停止如果我不使用API並將轉換代碼移到控制檯進行測試,那麼所有好的,所有100個文件都會逐個轉換。
在實際場景中,需要轉換數千個docx文件,並且我們計劃每個文件都向API發出請求,這意味着在短時間內請求數千個請求。
那麼,你們可以提供一個線索如何解決這個問題?我是否需要修改IIS的某些設置?
如果您有任何問題,請讓我知道。謝謝。