在Windows通用应用程序设置HttpClientHandler凭据时抛出异常(Exception

2019-10-23 03:41发布

我知道,这是在技术上还是一个预览,这可能是已知的(或未知)的问题,但我也失去了一些东西明显(尤其是不能够设置凭据听起来很重要,微软很可能已经修好了) 。

要重现:

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()

我的意思是,很明显的内部问题是什么,但我不知道为什么。 唯一的例外是在证书类被称为无GetCredential抛出,所以它不是。

相同的代码工作完全在Windows 8.1的应用程序。

我使用VS2015 RC,最新的W10构建和最新的开发工具,所以我没有过时或者存在。

Answer 1:

由于尤瓦Itzchakov评论的问题下面,在这种情况下,你可以这样做

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

要么

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

我仍然好奇,为什么W10打破什么W8.1的工作,但现在已经不那么重要了。



文章来源: Exception thrown when setting HttpClientHandler credentials in Windows Universal Apps