Проблемы с доступом к SkyDrive из Windows Phone 7

Мы используем Live Connect SDK 5.0 для извлечения изображений из SkyDrive из нашего приложения для Windows Phone 7.5.

Код приложения (упрощенный), приведенный ниже, работал до нескольких дней назад. Теперь, когда мы пытаемся получить доступ к imageStream (или любой другой информации, захваченной в обратном вызове), мы получаем исключение System.Argument (HResult = -2147024809, "Значение не попадает в ожидаемый диапазон", но, как обычно, ошибочное значение не является упоминается). Мы проверили нашу кодовую базу, и в последнее время не было никаких изменений кода в этой области продукта.

Были ли какие-либо изменения API? Есть ли способ (Fiddler, но для приложений, а не IE) для проверки сетевого трафика в надежде, что с сервера будет передано больше информации? Есть ли локальные значения, которые кэшируются, которые могут мешать?

Вот соответствующий код:

public partial class OptionsPage : PhoneApplicationPage
{
    private LiveConnectClient _liveClient = null;

    public OptionsPage()
    {
        InitializeComponent();
    }

    private void OnSessionChanged(Object sender, LiveConnectSessionChangedEventArgs args)
    {
        if (args != null && args.Session != null && args.Session.Status == LiveConnectSessionStatus.Connected)
        {
            this._liveClient = new LiveConnectClient(args.Session);
        this.GetUserPicture();
        }
    }

    private void GetUserPicture()
    {
        var memoryStream = new MemoryStream();
        _liveClient.DownloadCompleted += new EventHandler<LiveOperationCompletedEventArgs>(this.GetUserPictureCallback);
        _liveClient.DownloadAsync("/me/picture?return_ssl_resources=true", memoryStream, memoryStream);
    }

    private void GetUserPictureCallback(object sender, LiveOperationCompletedEventArgs e)
    {
        _liveClient.DownloadCompleted -= this.GetUserPictureCallback;

        try
        {
            if (e.Error == null)
            {
                MemoryStream imageStream = e.UserState as MemoryStream;
                BitmapImage b = new BitmapImage();
                b.SetSource(imageStream);
            }
            else
            {
                MessageBox.Show(e.Error.Message, "Windows Live Error", MessageBoxButton.OK);
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "SkyDrive Exception", MessageBoxButton.OK);
        }
    }
}

И SignInButton определяется следующим образом:

        <live:SignInButton Content="Button" Height="65" HorizontalAlignment="Left" Margin="110,41,0,0"
            Name="signInButton1" VerticalAlignment="Top" Width="215" ClientId="[REAL_CLIENT_ID]" 
            Scopes="wl.offline_access wl.signin wl.basic wl.skydrive wl.skydrive_update"
            RedirectUri="https://oauth.live.com/desktop"
            Branding="Skydrive"
            TextType="SignIn"
            Background="Red"
            SessionChanged="OnSessionChanged" />

1 ответ

Решение

Похоже, что я использовал бета-версию Live Connect SDK 5.0. Как только я обновился до версии RTM (и сделал необходимые изменения кода), он снова начал работать.

Другие вопросы по тегам