2013-09-16 141 views
1

我有下面的代碼來獲取視頻的上傳時間:Retrieveing視頻/音頻持續時間使用WindowsAPICodecPack和殼牌

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"; 
} 

時豎起來Azure存儲它似乎並沒有這個工程預期在本地主機,但能夠檢索文件的細節。該

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

保存上傳到目錄中,以便我可以抓住這些細節,但無論我怎麼努力我似乎當儲存在Azure上得到返回的納秒。這是一個已部署的MVC應用程序,臨時目錄存儲在服務器的C:/驅動器上。

回答

1

您引用的代碼是使用本機(Shell)函數。由於AzureWebSites是作爲高密度共享環境運行的,因此您的代碼會運行到非完全信任模式。即使您擴展到保留模式實例,對Azure網站的本地函數調用也會受到限制。

UPDATE

只有這樣,才能獲得應用程序在完全信任執行的是使用Web角色(對於Web項目)或工作者角色(後臺任務)。

瞭解更多關於cloud services here

+1

是否有你能想到這將允許我使用這個在Azure上或本應被排除出了問題的解決方案的任何解決方法嗎?我已經部署了WindowsAPICodepack dll,並且這些shell不應該作爲完全信任的應用運行? – Jay