1

我有以下代码来检索上传视频的持续时间:

HttpPostedFileBase postedFileCopy = postedFile;
postedFileCopy.InputStream.Position = 0;
Stream stream = postedFile.InputStream;

LocalResource tempDirectory = RoleEnvironment.GetLocalResource("TempZipDirectory");
postedFile.SaveAs(tempDirectory.RootPath + @"\" + postedFile.FileName);

ShellFile so = ShellFile.FromFilePath(tempDirectory.RootPath + @"\" + postedFile.FileName);
string durationString;
double nanoseconds;                
double.TryParse(so.Properties.System.Media.Duration.Value.ToString(),out nanoseconds);

if (nanoseconds > 0)
{
  int totalSeconds = (int)Math.Round((nanoseconds / 10000000), 0);
  int seconds = totalSeconds % 60;
  int minutes = totalSeconds / 60;
  int hour = totalSeconds / (60 * 60);
  durationString = "" + hour + ":" + minutes + ":" + seconds;
}
else
{
  System.Diagnostics.EventLog.WriteEntry("Application", "BLANK DURATION STRING", System.Diagnostics.EventLogEntryType.Error);
  durationString = "00:00:00";
}

这在 localhost 上按预期工作,但是当放到 Azure 存储中时,它似乎无法检索文件的详细信息。这

postedFile.SaveAs(tempDirectory.RootPath + @"\" + postedFile.FileName);

将上传保存到目录,这样我就可以获取这些详细信息,但无论我尝试什么,当存储在天蓝色时,我似乎都无法返回纳秒。这是一个部署的 MVC 应用程序,临时目录存储在服务器的 C:/ 驱动器上。

4

1 回答 1

1

您引用的代码使用本机(Shell)函数。由于 AzureWebSites 作为高密度共享环境运行,因此您的代码会进入非完全信任模式。在 Azure 网站中,对本机函数的调用受到限制,即使你扩展到保留模式实例也是如此。

更新

让应用程序在 FULL TRUST 下执行的唯一方法是使用 Web Role(用于 Web 项目)或 Worker Role(用于后台任务)。

在此处阅读有关云服务的更多信息。

于 2013-09-17T06:44:12.713 回答