asp.net-web-api - 自主机中的 maxRequestLength?文件大小>100kb 不会上传

标签 asp.net-web-api self-hosting

我遇到一个问题,当上传文件大小大于 100kb 时,不会调用 web api Controller 。我搜索了一会儿,发现也许我应该在 webconfig 中设置 maxRequestLength。但是如何在自主机中设置它?

客户端

public async Task<bool> Upload(DeviceFile file,string path)
{
    var formData = new MultipartFormDataContent();
    var request = new HttpRequestMessage();
    var md5 = new MD5CryptoServiceProvider();
    var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read,bufferSize:4096,useAsync:true);
    fileStream.Position = 0;
    var hash = md5.ComputeHash(fileStream);
    fileStream.Position = 0;

    formData.Add(
            new StreamContent(fileStream),
            file.Name,
            file.Name,
            new {
               Info = file.Info,
            }
        );

    request.Method = HttpMethod.Post;
    request.Content = formData;
    request.RequestUri = new Uri(client.BaseAddress,"api/file/");

    try
    {
        var response = await client.SendAsync(request).ConfigureAwait(false);
        await response.Content.ReadAsAsync<bool>().ConfigureAwait(false);
    }
    catch (Exception ex)
    {
        this.logger.Log(ex.ToString(), Category.Info, Priority.None);
    }

    return true;
}

服务器 Controller
public async Task<HttpResponseMessage> Add()
{
    if (!Request.Content.IsMimeMultipartContent())
    {
        throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
    }

    var provider = new MultipartFormDataStreamProvider("D:/");

    try
    {
        await Request.Content.ReadAsMultipartAsync(provider);

        // This illustrates how to get the file names.
        foreach (MultipartFileData file in provider.FileData)
        {
            Console.WriteLine(file.Headers.ContentDisposition.FileName);
            Console.WriteLine("Server file path: " + file.LocalFileName);
        }

        foreach (var key in provider.FormData.AllKeys)
        {
            foreach (var val in provider.FormData.GetValues(key))
            {
                Console.WriteLine(string.Format("{0}: {1}", key, val));
            }
        }
        return Request.CreateResponse(HttpStatusCode.OK);
    }
    catch (System.Exception e)
    {
        return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
    }
}

最佳答案

关于asp.net-web-api - 自主机中的 maxRequestLength?文件大小>100kb 不会上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16788521/

相关文章:

asp.net-web-api - 如何从Azure移动应用程序中的身份提供商获取用户信息?

c# - 如何销毁包含三个列表的 List 元素,以便我可以创建一个列表以添加到数据库

ssl - Owin self 主机 SSL 连接重置

具有传输安全性的 WCF 自托管服务(身份验证失败,因为远程方已关闭传输流。)

asp.net-mvc-routing - 无法解析到 MVC Controller 的属性路由

c# - JSonConverter 没有在 C# WebAPI 中触发我的模型的属性

c# - 特定于 ASP.NET Web API 中的 Controller 的自定义委托(delegate)处理程序

internet-explorer - IE 中的 ASP.NET Web API

c# - wcf 自托管多个服务

c# - 如何远程访问自托管的 Nancy 服务?