Проблемы с доступом к 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" />

person Philipp Schmid    schedule 13.01.2012    source источник
comment
Вы можете анализировать трафик приложений с помощью Fiddler.   -  person EricLaw    schedule 14.01.2012


Ответы (1)


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

person Philipp Schmid    schedule 14.01.2012