Asp.net web api Web API文件传输未经授权的错误
我正在使用ASP.NETMVC5和WebAPIv2编写一个简单的WebAPI应用程序。api应该从在Winforms应用程序中使用Asp.net web api Web API文件传输未经授权的错误,asp.net-web-api,Asp.net Web Api,我正在使用ASP.NETMVC5和WebAPIv2编写一个简单的WebAPI应用程序。api应该从在Winforms应用程序中使用HttpClient的客户端接收二进制文件。应用程序和网站应在带有Active Directory的封闭网络上运行 控制员: [Route("FileTest"] public HttpResponseMessage PostTest([FromBody]HttpPostedFileBase file) { // does nothing just retun
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
}
}
}
为什么这不起作用?HttpPostedFileBase是一个MVC类,它不是一个Web API类,所以它们不太可能一起工作 与其尝试将文件作为参数传递,不如将请求内容作为流读取
[Route("FileTest"]
public async Task<HttpResponseMessage> PostTest(HttpRequestMessage request)
{
var stream = await request.Content.ReadAsStreamAsync();
// ...
}
[路由(“文件测试”]
公共异步任务后测试(HttpRequestMessage请求)
{
var stream=await request.Content.ReadAsStreamAsync();
// ...
}
谢谢。但如何获取文件详细信息?如文件名和长度?我在客户端的代码是否正确?如果我想从网页发送文件,该怎么办?@user3404887长度在request.Content.Headers.ContentLength中,您可以设置ContentDisposition头以传递文件名。