Silverlight 4 webclient身份验证-有人已经开始使用了吗?

Silverlight 4 webclient身份验证-有人已经开始使用了吗?,silverlight,silverlight-4.0,credentials,Silverlight,Silverlight 4.0,Credentials,因此,关于新的Silverlight 4 beta版的一个最好的部分是,他们最终实现了网络堆栈中缺失的一个重要功能—网络凭据 在下面的示例中,我有一个有效的请求设置,但由于某种原因,当请求返回时,我会收到一个“安全错误”——这是因为twitter.com拒绝了我的api调用还是我在代码中缺少了什么 应该指出的是,当我通过fiddler看到这段代码执行时,它显示跨域的xml文件被成功地拉下来,但这是fiddler显示的最后一个请求 public void RequestTimelineFromTw

因此,关于新的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
        }

我发现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>

桌面上的TrustedNetworkApp应用程序;无论是在家里、工作中还是外出。
请注意**安全设置ElevatedPermissions=“Required”

保存后,这相当于像Tim在视频中所做的那样检查

2) -当我在看Tim的视频时,我注意到你必须在浏览器之外调试它才能正常工作。因此,安装应用程序并在浏览器外运行。这个应用现在可以工作了

我将写一篇简短的博文,总结我在测试版下使用网络堆栈的经验,并为感兴趣的人链接到它

更新

最后,我写了一篇博客,介绍了我使用Silverlight 4构建浏览器外twitter客户端的经验,如果有人感兴趣的话