NancyFX中的上载会暂停上载

时间:2019-03-18 17:03:44

标签: c# .net azure-storage nancy azure-storage-files

nuget包Microsoft.Azure.Storage.File 9.4.2将文件上传到<26MB的地方就好了,并且在上传文件> 26MB时会无限期地挂起。

项目的目标是.NET(桌面)框架4.7.2。

*****更新***** 当尝试使用各种客户端和各种云服务上载大型文件时出现此问题(我在上载到S3时遇到了相同的问题),但仅在NancyFx Web应用程序的上下文中。与部署到Azure应用服务时在本地发生相同的问题,因此几乎可以肯定与我的本地开发人员配置无关。

请注意,尝试在NancyFx应用程序内上载时,上载会挂起;我没有将上传到 NancyFx应用程序。

目前,我的解决方案是不从Nancy内部上传文件,但如果有人对仍然存在的问题有技术解决方案感兴趣,我将保留此问题。

*****结束更新*****

请注意,文件上传

尝试的用法如下:

public void UploadFileFromFile(string azureFileName, string localFileName)
{
    CloudStorageAccount storageAccount = CloudStorageAccount.Parse(SafeConfig.AzureFileStorageMaterialConnectionString);
    CloudFileClient client = storageAccount.CreateCloudFileClient();
    CloudFileShare share = client.GetShareReference(SafeConfig.AzureFileStorageMaterialShareName);
    CloudFileDirectory dir = share.GetRootDirectoryReference();
    CloudFile fileReference = dir.GetFileReference(azureFileName);
    fileReference.UploadFromFile(localFileName);
}

值得一提的是,当我使用fileReference.UploadFromByteArray()方法时,客户端会挂起相同的消息,而当我尝试使用各种* Async替代方法时,也会挂起相同的消息。

当我尝试使用方法fileReference.UploadFromStream()时,出现异常“ 对象未处于可用状态”,我认为这不是一条特别可行的异常消息。这是我首选的上传方法,但是不同的错误体验可能会使它成为一个单独的问题。

1 个答案:

答案 0 :(得分:0)

我使用与您相同的软件包和相同的代码,一切都很好,可以上传超过26M的文件。您可以尝试重新启动Visual Studio再试一次吗?

我的代码:

using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.File;
using System;

namespace MyConsole
{
    class Program
    {
        static void Main(string[] args)
        {
            Program p = new Program();
            string azureFileName = "1.zip";
            string localFileName = @"D:\1.zip";

            Console.WriteLine("start upload..");

            p.UploadFileFromFile(azureFileName, localFileName);

            Console.WriteLine("completed**");
            Console.ReadLine();
        }

        public void UploadFileFromFile(string azureFileName, string localFileName)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse("xxxx");
            CloudFileClient client = storageAccount.CreateCloudFileClient();
            CloudFileShare share = client.GetShareReference("testfolder");
            CloudFileDirectory dir = share.GetRootDirectoryReference();
            CloudFile fileReference = dir.GetFileReference(azureFileName);
            Console.WriteLine("going to upload");
            fileReference.UploadFromFile(localFileName);
        }
    }
}

可以上传文件:

enter image description here