Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api selfhost中的maxRequestLength?文件大小>;100kb将不会上载_Asp.net Web Api_Self Hosting - Fatal编程技术网

Asp.net web api selfhost中的maxRequestLength?文件大小>;100kb将不会上载

Asp.net web api selfhost中的maxRequestLength?文件大小>;100kb将不会上载,asp.net-web-api,self-hosting,Asp.net Web Api,Self Hosting,我遇到了一个问题,当上传文件大小大于100kb时,不会调用WebAPI控制器。我搜索了一会儿,发现也许我应该在webconfig中设置maxRequestLength。但是如何在自宿主中设置它呢 客户 public async Task<bool> Upload(DeviceFile file,string path) { var formData = new MultipartFormDataContent(); var request = new HttpRequ

我遇到了一个问题,当上传文件大小大于100kb时,不会调用WebAPI控制器。我搜索了一会儿,发现也许我应该在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;
}
公共异步任务上载(DeviceFile文件,字符串路径)
{
var formData=new MultipartFormDataContent();
var request=new-HttpRequestMessage();
var md5=新的MD5CryptoServiceProvider();
var fileStream=newfilestream(路径,FileMode.Open,FileAccess.Read,FileShare.Read,bufferSize:4096,useAsync:true);
fileStream.Position=0;
var hash=md5.ComputeHash(fileStream);
fileStream.Position=0;
formData.Add(
新的StreamContent(文件流),
文件名,
文件名,
新的{
Info=file.Info,
}
);
request.Method=HttpMethod.Post;
request.Content=formData;
request.RequestUri=新Uri(client.BaseAddress,“api/file/”);
尝试
{
var response=await client.sendaync(请求).ConfigureAwait(false);
wait response.Content.ReadAsAsync().configurewait(false);
}
捕获(例外情况除外)
{
this.logger.Log(例如ToString(),Category.Info,Priority.None);
}
返回true;
}
服务器控制器

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);
    }
}
公共异步任务添加() { 如果(!Request.Content.IsMimeMultipartContent()) { 抛出新的HttpResponseException(HttpStatusCode.UnsupportedMediaType); } var provider=新的MultipartFormDataStreamProvider(“D:/”); 尝试 { wait Request.Content.ReadAsMultipartAsync(提供程序); //这说明了如何获取文件名。 foreach(provider.FileData中的MultipartFileData文件) { Console.WriteLine(file.Headers.ContentDisposition.FileName); Console.WriteLine(“服务器文件路径:+file.LocalFileName”); } foreach(provider.FormData.AllKeys中的var键) { foreach(provider.FormData.GetValues(键)中的var val) { WriteLine(string.Format(“{0}:{1}”,key,val)); } } 返回Request.CreateResponse(HttpStatusCode.OK); } 捕获(System.e例外) { 返回请求.CreateErrorResponse(HttpStatusCode.InternalServerError,e); } }
可以在自主机配置对象上设置MaxReceivedMessageSize


再次感谢,我设置了httpsConfig.MaxReceivedMessageSize=655360;httpsConfig.MaxBufferSize=655360;