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 アプリケーションであり、tempdirectory はサーバーの C:/ ドライブに保存されます。

4

1 に答える 1

1

参照するコードは、ネイティブ (シェル) 関数を使用しています。AzureWebSites は高密度の共有環境として実行されているため、コードは非完全信頼モードで実行されます。予約モードのインスタンスにスケーリングした場合でも、ネイティブ関数の呼び出しは Azure Web サイトで制限されます。

アップデート

FULL TRUST でアプリケーションを実行する唯一の方法は、Web ロール (Web プロジェクトの場合) または Worker ロール (バックグラウンド タスクの場合) を使用することです。

クラウド サービスの詳細については、こちらをご覧ください。

于 2013-09-17T06:44:12.713 に答える