Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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
C# 通过Ajax请求Umbraco Azure超时_C#_.net_Azure_Umbraco_Umbraco7 - Fatal编程技术网

C# 通过Ajax请求Umbraco Azure超时

C# 通过Ajax请求Umbraco Azure超时,c#,.net,azure,umbraco,umbraco7,C#,.net,Azure,Umbraco,Umbraco7,我有一个脚本,可以在Umbraco的媒体页面中创建一个条目。我的想法是通过FTP将视频上传到服务器上。现在我有了一个按钮,我将单击该按钮,然后调用API。此API将运行一个脚本,该脚本将在创建媒体条目后以编程方式创建媒体条目,并删除该文件。使用此方法,我可以在Umbraco中创建介质,即使是大文件。现在,当文件非常大时,我遇到了超时问题。有什么解决办法吗?我正在为我的应用程序使用Azure Web App服务。如何解决此超时问题 下面是我的代码 string[] filePaths = Dire

我有一个脚本,可以在Umbraco的媒体页面中创建一个条目。我的想法是通过FTP将视频上传到服务器上。现在我有了一个按钮,我将单击该按钮,然后调用API。此API将运行一个脚本,该脚本将在创建媒体条目后以编程方式创建媒体条目,并删除该文件。使用此方法,我可以在Umbraco中创建介质,即使是大文件。现在,当文件非常大时,我遇到了超时问题。有什么解决办法吗?我正在为我的应用程序使用Azure Web App服务。如何解决此超时问题

下面是我的代码

string[] filePaths = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory + "uploads");

foreach (string filePath in filePaths)
{

    using (Stream stream = System.IO.File.OpenRead(filePath))
    {
        string filename = Path.GetFileName(filePath);
        string mediaType = Constants.Conventions.MediaTypes.File;
        string ext = Path.GetExtension(filename);

        if (ext == ".jpg" || ext== ".png" || ext == ".gif" || ext == ".jpeg") {
            mediaType = Constants.Conventions.MediaTypes.Image;
        }

        IMedia media = Services.MediaService.CreateMedia(filename, Constants.System.Root, mediaType);
        media.SetValue("umbracoFile", filename, stream);
        Services.MediaService.Save(media);
        media = null;
    }

    System.IO.File.Delete(filePath);
}

如果您使用的是azure,那么可以将上载操作改为blobstorage,而不是locale应用程序实例。随着时间的推移,Azure web实例的内存使用受到限制。因此,无论如何,将大文件上传到azure web应用程序可能是个坏主意

第二个简单的解决方案,如果只发生一次:在umbraco中上载一个小文件,然后用FTP覆盖磁盘上的文件

第三解决方案:考虑YouTube或Vimeo等服务,因为它们处理所有不同浏览器和带宽的所有编码。

如果您考虑允许在Web.CONFIG中上传大文件。


不要更改
maxAllowedContentLength
,否则会增加潜在的DoS攻击。如果它确实是唯一的解决方案,则只允许在必要的路径(例如/umbraco/文件夹)上使用它。

您可以在web.config中配置它。我建议将文件的最大大小设置为2G,您可以设置得更高。期待你的测试结果。