Silverlight 4 webclient身份验证 – 任何人都有这个工作吗?

因此,关于新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) – 在this video由Tim Heuer发现我的VS2010 w / Silverlight 4工具包安装与最终构建不匹配所以我错过了显示在“浏览器外设置”对话框中的选项,该对话框提供了复选框“在浏览器外部运行时需要提升信任度”.

在上面列出的视频中,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客户端的经验的博客post,如果有人有兴趣的话.

点赞