C# 通过Ajax请求Umbraco Azure超时
我有一个脚本,可以在Umbraco的媒体页面中创建一个条目。我的想法是通过FTP将视频上传到服务器上。现在我有了一个按钮,我将单击该按钮,然后调用API。此API将运行一个脚本,该脚本将在创建媒体条目后以编程方式创建媒体条目,并删除该文件。使用此方法,我可以在Umbraco中创建介质,即使是大文件。现在,当文件非常大时,我遇到了超时问题。有什么解决办法吗?我正在为我的应用程序使用Azure Web App服务。如何解决此超时问题 下面是我的代码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
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,您可以设置得更高。期待你的测试结果。