我正在使用Web Api創建一種通過Web API上傳文件的方式。我發現了幾篇關於如何完成這篇文章的博文,代碼與Request.Content.ReadAsMultipartAsync()調用的關鍵通用性非常相似。我遇到的問題是第一次上傳可以正常工作,但隨後IIS進入故障狀態,導致後續上傳失敗。第一個32Kb進來,但它然後退出。調試只顯示出現在ASP.NET框架某處的空引用異常。通過Web上傳文件Api第二次上傳失敗
這裏是ApiController定義我...
public class FileUploadController : ApiController
{
public void Post()
{
if (Request.Content.IsMimeMultipartContent())
{
var path = HttpContext.Current.Server.MapPath("~/App_Data");
var provider = new MultipartFormDataStreamProvider(path);
var task = Request.Content.ReadAsMultipartAsync(provider);
task.ContinueWith(t =>
{
if (t.IsFaulted || t.IsCanceled)
throw new HttpResponseException(HttpStatusCode.InternalServerError);
});
}
else
{
throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted"));
}
}
}
而且,這裏是我從張貼在網頁...
<!doctype html>
<head>
<title>File Upload Progress Demo #3</title>
</head>
<body>
<h1>File Upload Progress Demo #3</h1>
<code><input type="file" name="myfile[]"></code><br>
<form action="/api/fileupload" method="post" enctype="multipart/form-data">
<input type="file" name="myfile"><br>
<input type="submit" value="Upload File to Server">
</form>
<div class="progress">
<div class="bar"></div>
<div class="percent">0%</div>
</div>
<div id="status"></div>
</body>
上面的代碼可以在默認下載來自https://github.com/JohnLivermore/FileUploadTest的WebApi解決方案。運行並導航至http://localhost:{port}/FormPost.html
。第一個上傳成功(上傳到App_Data),但後續上傳僅上載第一個32 Kb,然後失敗。
此代碼是在.NET 4還是.NET 4.5上運行? – tugberk