Web API文件传输未经授权的错误

时间:2014-03-11 07:19:47

标签: asp.net-web-api

我正在使用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
           }
         }
     }

为什么这不起作用?

1 个答案:

答案 0 :(得分:0)

HttpPostedFileBase是一个MVC类,它不是Web API类,因此它们不太可能一起工作。

不要尝试将文件作为参数传递,只需将请求内容作为流读取。

[Route("FileTest"]
public async Task<HttpResponseMessage> PostTest(HttpRequestMessage request)
{
    var stream = await request.Content.ReadAsStreamAsync();
    // ...
}