在 Windows Universal Apps 中设置 HttpClientHandler 凭据时抛出异常

Exception thrown when setting HttpClientHandler credentials in Windows Universal Apps

我知道这在技术上仍然是一个预览,这可能是一个已知(或未知)的问题,但我也可能遗漏了一些明显的东西(特别是因为无法设置凭据听起来很重要,微软可能会已经修好了)。

重现:

public class Credentials : ICredentials
{
    public NetworkCredential GetCredential(Uri uri, string authType)
    {
        return new NetworkCredential("username", "password");
    }
}

public App()
{
    this.InitializeComponent();
    this.Suspending += OnSuspending;

    try
    {
        var credentials = new Credentials();
        var httpc = new HttpClientHandler();
        httpc.UseDefaultCredentials = false;
        httpc.Credentials = credentials;
    }
    catch (Exception ex)
    {
        return;
    }
}

异常详情为:

留言:

Value cannot be null.
Parameter name: format

堆栈跟踪:

at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args)
at System.Net.Http.HttpClientHandler.set_Credentials(ICredentials value)
at WinTenTest.App..ctor()

我的意思是,很清楚内部问题是什么,但我不知道为什么。调用Credentials class时没有GetCredential就抛出异常,所以不是那样。

相同的代码在 Windows 8.1 应用程序中完美运行。

我正在使用 VS2015 RC、最新的 W10 版本和最新的开发工具,所以我也没有过时。

正如 Yuval Itzchakov 在问题下方评论的那样,在这种情况下你可以这样做

httpc.Credentials = new NetworkCredential("", "")

httpc.Credentials = credentials.GetCredential(uri, authType).

我仍然很好奇为什么 W10 破坏了 W8.1 中的功能,但现在已经不那么重要了。