我正在使用ASP.NET MVC 5和Web API v2编写一个简单的Web API应用程序。 api应该从Winforms应用程序中使用HttpClient
的客户端接收二进制文件。应用程序和网站应该在具有Active Directory的封闭网络上运行。
控制器:
[Route("FileTest"]
public HttpResponseMessage PostTest([FromBody]HttpPostedFileBase file)
{
// does nothing just retuns ok
}
客户:
public void SendFile(string fileName)
{
using(FileStream fileStream = new FileStream(fileName, fileMode.open, FilleAccess.read))
{
using(MultipartFormDataContent data = new MultipartFormDataContent ())
{
using(StreamContent streamcontent = new StreamContent(fileStream))
{
data.Add(streamcontent );
HttpClient client = new HttpClient();
res = client .PostAsync("address", data).Result;
res.EnsureSucessStatusCode(); // exception unauthorized
}
}
}
为什么这不起作用?
答案 0 :(得分:0)
HttpPostedFileBase是一个MVC类,它不是Web API类,因此它们不太可能一起工作。
不要尝试将文件作为参数传递,只需将请求内容作为流读取。
[Route("FileTest"]
public async Task<HttpResponseMessage> PostTest(HttpRequestMessage request)
{
var stream = await request.Content.ReadAsStreamAsync();
// ...
}