Övervaka jobbförloppet med hjälp av .NET

media services logo


Anteckning

Uppdatera dina Azure Media Services REST API-OCH-SDK:er till v3 den 29 februari 2024. Version 3 av REST-API:t och klient-SDK:erna för Azure Media Services för .NET och Java har fler funktioner än version 2. Vi fasar ut version 2 av REST-API:t och klient-SDK:erna för Azure Media Services för .NET och Java.

Åtgärd krävs:Om du vill minimera avbrott i dina arbetsbelastningar kan du läsa migreringsguiden för att övergå från API och SDK:er för version 2 till API och SDK för version 3 före den 29 februari 2024. Efter den 29 februari 2024 accepterar Azure Media Services inte längre trafik på version 2 REST API, API-version 2015-10-01 för ARM-kontohantering eller från .NET-klient-API:erna version 2. Detta inkluderar alla klient-SDK:er med öppen källkod från tredje part som kan anropa API:et version 2. Lär dig mer om den senaste versionen, från och Media Services v3 Översikt.

När du kör jobb behöver du ofta ett sätt att spåra jobbförloppet. Du kan kontrollera förloppet genom att definiera en StateChanged-händelsehanterare (enligt beskrivningen i det här avsnittet) eller använda Azure Queue Storage för att övervaka Media Services jobbmeddelanden (enligt beskrivningen i det här avsnittet).

Definiera StateChanged-händelsehanterare för att övervaka jobbförloppet

I följande kodexempel definieras händelsehanteraren StateChanged. Den här händelsehanteraren spårar jobbförloppet och ger uppdaterad status, beroende på tillståndet. Koden definierar även Metoden LogJobStop. Den här hjälpmetoden loggar felinformation.

    private static void StateChanged(object sender, JobStateChangedEventArgs e)
    {
        Console.WriteLine("Job state changed event:");
        Console.WriteLine("  Previous state: " + e.PreviousState);
        Console.WriteLine("  Current state: " + e.CurrentState);

        switch (e.CurrentState)
        {
            case JobState.Finished:
                Console.WriteLine();
                Console.WriteLine("********************");
                Console.WriteLine("Job is finished.");
                Console.WriteLine("Please wait while local tasks or downloads complete...");
                Console.WriteLine("********************");
                Console.WriteLine();
                Console.WriteLine();
                break;
            case JobState.Canceling:
            case JobState.Queued:
            case JobState.Scheduled:
            case JobState.Processing:
                Console.WriteLine("Please wait...\n");
                break;
            case JobState.Canceled:
            case JobState.Error:
                // Cast sender as a job.
                IJob job = (IJob)sender;
                // Display or log error details as needed.
                LogJobStop(job.Id);
                break;
            default:
                break;
        }
    }

    private static void LogJobStop(string jobId)
    {
        StringBuilder builder = new StringBuilder();
        IJob job = GetJob(jobId);

        builder.AppendLine("\nThe job stopped due to cancellation or an error.");
        builder.AppendLine("***************************");
        builder.AppendLine("Job ID: " + job.Id);
        builder.AppendLine("Job Name: " + job.Name);
        builder.AppendLine("Job State: " + job.State.ToString());
        builder.AppendLine("Job started (server UTC time): " + job.StartTime.ToString());
        builder.AppendLine("Media Services account name: " + _accountName);
        builder.AppendLine("Media Services account location: " + _accountLocation);
        // Log job errors if they exist.  
        if (job.State == JobState.Error)
        {
            builder.Append("Error Details: \n");
            foreach (ITask task in job.Tasks)
            {
                foreach (ErrorDetail detail in task.ErrorDetails)
                {
                    builder.AppendLine("  Task Id: " + task.Id);
                    builder.AppendLine("    Error Code: " + detail.Code);
                    builder.AppendLine("    Error Message: " + detail.Message + "\n");
                }
            }
        }
        builder.AppendLine("***************************\n");
        // Write the output to a local file and to the console. The template 
        // for an error output file is:  JobStop-{JobId}.txt
        string outputFile = _outputFilesFolder + @"\JobStop-" + JobIdAsFileName(job.Id) + ".txt";
        WriteToFile(outputFile, builder.ToString());
        Console.Write(builder.ToString());
    }

    private static string JobIdAsFileName(string jobID)
    {
        return jobID.Replace(":", "_");
    }

Nästa steg

Granska sökvägarna för Media Services-utbildning.

Media Services v3 (senaste)

Kolla in den senaste versionen av Azure Media Services!

Media Services v2 (äldre)

Ge feedback

Använd User Voice-forumet för att ge feedback och förslag på hur Azure Media Services kan förbättras. Du kan även gå direkt till någon av följande kategorier: