System.Exception 6028 выбрасывается из MediaElement в Silverlight - PullRequest
2 голосов
/ 19 декабря 2011

После обновления с Silverlight 4 до Silverlight 5 я получаю System.Exception 6028, когда MediaElement в моем плеере пытается воспроизвести видео DRM h264.Это происходит, когда у меня уже есть лицензия, хранящаяся на моем компьютере.

Это происходит в Silverlight 5.0.61118.0.

Я был бы признателен за любую помощь в выявлении причины этого исключения и поиске решения, отличного от удалениялицензии и получение их снова.

РЕДАКТИРОВАТЬ: Я удалил все лицензии PlayReady на моем ПК, но через некоторое время я снова получил это системное исключение.Одна хорошая вещь об этом - я могу скопировать это сообщение об исключении:

System.Exception: 6028 No valid simple or leaf license is available to create the decryptor

Я проверил еще одну вещь.DRM-сервер, для которого мое приложение запрашивает лицензию, версии 1.5.2.

Ответы [ 4 ]

2 голосов
/ 21 мая 2012

Просто обновление, для новых читателей, это было решено в Silverlight 5.1.10411.0.

Примечания к выпуску от Microsoft:

Исправлена ​​ошибка, из-за которой постоянное получение лицензии не удавалось, когда пользователь обновлял Silverlight 4 до Silverlight 5.

От: http://www.microsoft.com/getsilverlight/locale/en-us/html/Microsoft%20Silverlight%20Release%20History.htm

2 голосов
/ 03 января 2012

Чек http://blogs.msdn.com/b/playready4/archive/2011/12/08/playready-license-acquisition-fails-after-upgrading-to-silverlight-5.aspx

Чтобы исправить эту проблему (в случае истекшей постоянной лицензии), нам нужно использовать обработчик событий MediaFailed. В обработчике, если код ошибки 6028, нам просто нужно использовать LicenseAcquirer для получения лицензии. LicenseAcquirer может быть пользовательским LicenseAcquirer или по умолчанию Лицензия Приобретатель SSME.

1 голос
/ 31 января 2012

Как уже упоминалось в одном из предыдущих ответов, вы должны проверить код ошибки 6028

Чтобы исправить эту проблему (в случае истекшей постоянной лицензии), нам нужно использовать обработчик событий MediaFailed>. В обработчике, если код ошибки 6028, нам просто нужно использовать LicenseAcquirer> для получения лицензии. LicenseAcquirer может быть пользовательским LicenseAcquirer или по умолчанию> LicenseAcquirer для SSME.

Как показано в приведенном ниже примере, мы использовали пользовательскую лицензию.

protected void OnMediaFailed(object sender, CustomEventArgs<Exception> e)
{
    if (e.Value.Message.StartsWith("6028"))
    {
        //Get Manifest Info Somehow
         ........
        //our custom acquirer initialization
        var acquirer = new ManualLicenseAcquirer(); 
        if (manifestInfo != null 
        && manifestInfo.ProtectionInfo != null
        && manifestInfo.ProtectionInfo.ProtectionHeader != null)
    {
        acquirer.AcquireLicenseCompleted += this.OnLAcquirerCompleted;
        acquirer.AcquireLicenseAsync(manifestInfo.ProtectionInfo.ProtectionHeader.ProtectionData);
    }
    else
    {
        this.ShowCustomError("Manifest info is null or protection header is null", true, true);
    }
}

private void OnLAcquirerCompleted(object sender, AcquireLicenseCompletedEventArgs e)
{
    if (e.Error != null)
    {
        this.ShowCustomError(string.Format("Server response error: {0}", e.Error), true, true);
    }
    else if (e.Cancelled)
    {
        this.ShowCustomError(string.Format("Manual license acquier request was cancelled"), true, true, true);
    }
    else
    {
        this.Play();    
    }
}
0 голосов
/ 12 января 2012

Я обнаружил, что обновление до Silverlight 5 часто нарушает установку PlayReady, используемую Silverlight, при бессмысленных ошибках, возникающих при попытке воспроизведения.

Исправление, которое сработало для меня:

  1. Удалить Silverlight 5
  2. Удалить %ProgramData%\Microsoft\PlayReady (обратите внимание, что это также приведет к удалению всех постоянных лицензий)
  3. Перезапустить.
  4. Переустановить Silverlight 5

На некоторых компьютерах мне нужно было повторить этот процесс несколько раз, чтобы снова запустить PlayReady.

...