4

したがって、新しい Silverlight 4 ベータ版の最も優れた点の 1 つは、ネットワーク スタックに欠けていた大きな機能であるネットワーク資格情報がついに実装されたことです。

以下では、動作中のリクエストのセットアップがありますが、何らかの理由でリクエストが戻ってくると「セキュリティ エラー」が発生します。

このコードがフィドラーを介して実行されるのを見ると、クロスドメインのxmlファイルが正常にプルダウンされていることが示されますが、それはフィドラーによって表示される最後のリクエストです...

public void RequestTimelineFromTwitterAPI()
        {
               WebRequest.RegisterPrefix("https://", System.Net.Browser.WebRequestCreator.ClientHttp);

               WebClient myService = new WebClient();
               myService.AllowReadStreamBuffering = true;
               myService.UseDefaultCredentials = false;
               myService.Credentials = new NetworkCredential("username", "password");
               myService.UseDefaultCredentials = false;

               myService.OpenReadCompleted += new OpenReadCompletedEventHandler(TimelineRequestCompleted);
               myService.OpenReadAsync(new Uri("https://twitter.com/statuses/friends_timeline.xml"));
        }

        public void TimelineRequestCompleted(object sender, System.Net.OpenReadCompletedEventArgs e)
        {
            //anytime I query for e.Result I get a security error
        }
4

1 に答える 1

2

このリクエストがセキュリティ例外をスローする原因となった 2 つの問題が見つかりました

1) - Tim Heuer によるこのビデオでは、VS2010 w/Silverlight 4 ツールキットのインストールが最終ビルドと一致しなかったため、チェックボックスを提供する「out of browser settings」ダイアログに表示されるオプションがありません。 「ブラウザー外で実行する場合は昇格した信頼が必要」の場合。

上記のビデオでは、Tim がこれをチェックして、Silverlight アプリが Twitter API と通信できるようにします。

しかし、私のアプリケーションにはこのオプションがなかったため、手動で xml ファイルを編集する必要があり、以下のようになりました。この xml は、プロジェクト フォルダーのプロパティの下、またはビジュアル スタジオ内で直接見つけることができます。

<OutOfBrowserSettings ShortName="TrustedNetworkApp Application" EnableGPUAcceleration="False" ShowInstallMenuItem="True">
  <OutOfBrowserSettings.Blurb>TrustedNetworkApp Application on your desktop; at home, at work or on the go.</OutOfBrowserSettings.Blurb>
  <OutOfBrowserSettings.WindowSettings>
    <WindowSettings Title="TrustedNetworkApp Application" Height="480" Width="640" />
  </OutOfBrowserSettings.WindowSettings>
  <OutOfBrowserSettings.SecuritySettings>
    <SecuritySettings ElevatedPermissions="Required" />
  </OutOfBrowserSettings.SecuritySettings>
  <OutOfBrowserSettings.Icons />
</OutOfBrowserSettings>

**セキュリティ設定 ElevatedPermissions="Required" に注意してください

これを保存した後は、ティムがビデオで行ったようにこれを確認するのと同じです。

2) - Tim のビデオを見ていると、これを機能させるにはブラウザの外でデバッグする必要があることに気付きました。アプリをインストールして、ブラウザの外で実行します。このアプリは動作するようになりました。

ベータ版でのネットワーク スタックに関する私の経験をまとめた短いブログ記事を書き、興味のある人のためにリンクします。

アップデート

最後に、Silverlight 4 を使用してブラウザ外の Twitter クライアントを構築した経験についてブログ記事を書きました。

于 2009-11-23T21:05:05.403 に答える