Silverlight 4的WebClient身份验证 - 有人已经解决了吗?

4

新版Silverlight 4 beta最好的部分之一是,他们终于实现了网络堆栈中最重要的缺失功能 - 网络凭据!

在下面的代码中,我设置了一个工作请求,但出现“安全错误”,这是因为twitter.com拒绝了我的api调用还是我在代码中漏掉了什么?

值得注意的是,当我通过fiddler观察此代码执行时,它显示跨域的xml文件已成功下载,但这是fiddler显示的最后一个请求...

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
        }
1个回答

2
我发现了两个问题导致了这个请求抛出了安全异常。
1) - 在Tim Heuer的这个视频中,我发现我的VS2010 w/ Silverlight 4 toolkit安装与最终版本不匹配,因此我缺少“在浏览器外运行时需要提升的信任级别”复选框的选项,该选项会显示在“离线设置”对话框中。
在上述视频中,Tim检查了这一点,以便Silverlight应用程序可以访问Twitter API。
但由于我的应用程序没有这个选项,所以我必须手动编辑xml文件,使其看起来像下面这样。您可以在项目文件夹中的属性下或直接在Visual Studio中找到此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" 的安全设置。
保存后,它相当于像 Tim 在视频中所做的那样检查。
2) - 当我观看 Tim 的视频时,我注意到必须在浏览器外部进行调试才能使其正常工作。因此,请安装应用并在浏览器外运行它。现在这个应用程序可以工作了。
我将写一篇简短的博客文章,总结我的体验,链接给任何感兴趣的人。
更新
最终,我写了一篇博客文章,记录了使用 Silverlight 4 构建离线 Twitter 客户端的体验,如果有人感兴趣,请点击这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接