3

我正在尝试从我的提供商处下载文件。

url 受基本用户名和密码保护,所有内容都通过 ssl 发送。

所以我尝试这样做:

        WebClient proxy = new WebClient();

        proxy.DownloadStringCompleted += (o, dscea) => System.Diagnostics.Debugger.Break();
        proxy.Credentials = new NetworkCredential("username", "password");
        proxy.DownloadStringAsync(new Uri("https://..../.../data.xml"));

如您所见,我尝试验证。url 是正确的,当我尝试从 twitter 下载一些东西时,代码可以工作。

当我在 Firefox / Internet Explorer 中输入 URL 时,该 URL 有效

我忘记连接到这个 xml 文件是什么?

我得到的错误如下:

我正在使用 Visual Studio 2010(完整版,而不是 Express)和 CTP 刷新 :)

4

2 回答 2

6

这似乎在 Beta 工具版本中得到修复。我不得不直接设置 Authorization 标头,因为 .NET 没有按照您可能期望的方式处理基本身份验证。这是我的工作代码片段:

var client = new WebClient();

var token = Convert.ToBase64String(Encoding.UTF8.GetBytes(string.Format("{0}:{1}", username, password)));
var authHeader = string.Format("Basic {0}", token);

client.Headers["Authorization"] = authHeader;
client.DownloadStringCompleted += (s, e) =>
{
   // handle result
};

client.DownloadStringAsync(url);
于 2010-07-13T04:45:03.367 回答
2

显然,当您尝试执行 SSL 请求时它会出错。常规 Silverlight 中的 Silverlight 不支持通过 SSL 进行身份验证(引发未实现的异常)。

所以我很确定这在 WP7 中是同样的问题。

于 2010-05-05T09:08:42.450 回答