Dosyaları yüklemek için HTTP PUT fiilini kullanarak bir ASP.Net Web Api 2 eylemini açığa çıkarmak istiyorum. Bu API, bir uzak dosya sistemini (WebDAV'a benzer, ancak gerçekten basitleştirilmiş) temsil ettiği için REST modelimiz ile uyumludur, dolayısıyla istemci kaynak isimlerini seçer (böylece PUT idealdir ve POST mantıklı bir seçim değildir).ASP.Net Web Api 2'de PUT fiilini kullanarak dosya yükleme
Web Api belgeleri, how to upload files using multipart/form-data forms'u açıklar, ancak PUT yöntemlerini kullanarak nasıl yapılacağını açıklamaz.
Böyle bir API'yi sınamak için ne kullanırsınız (HTML çoktan formları PUT fiillerine izin vermez)? Sunucu uygulaması (MultipartStreamProvider
kullanarak) the web api documentation açıklanan çok parçalı uygulanması gibi görünecektir, yoksa bu gibi görünmelidir:
[HttpPut]
public async Task<HttpResponseMessage> PutFile(string resourcePath)
{
Stream fileContent = await this.Request.Content.ReadAsStreamAsync();
bool isNew = await this._storageManager.UploadFile(resourcePath, fileContent);
if (isNew)
{
return this.Request.CreateResponse(HttpStatusCode.Created);
}
else
{
return this.Request.CreateResponse(HttpStatusCode.OK);
}
}
O olacaktır:
Basit konsol uygulaması (Web Api istemci kütüphanelerini kullanarak) test etmek yeterlidir: Burada herhangi bir kimlik doğrulama/yetkilendirme/hata işleme kod dışarı çıkardı bir örnek vardır HTTP Sunucusu'nu kullanmaktan ziyade, bunun için uygun bir birim testi nasıl yazılacağını görmek ilginç. – James
404 hatası aldığım için bunu çalışmak için çok fazla sorun yaşadım. Görünüşe göre, '{dosyaadı}. {Extension} 'biçimindeki dosya adlarını kabul etmek için web.config dosyasını değiştirmeniz gerekebilir. Ayrıntılar için şu Stackoverflow sorusuna bakın: http://stackoverflow.com/questions/20998816/dot-character-in-mvc-web-api-2-for-request-such-as-api-people-staff-45287 –