在Windows通用应用程序中设置HttpClientHandler凭证时抛出异常
本文关键字:HttpClientHandler 凭证 抛出异常 设置 Windows 应用程序 | 更新日期: 2023-09-27 17:49:39
我知道这在技术上仍然是一个预览,这可能是一个已知(或未知)的问题,但我也可能错过了一些明显的东西(特别是不能设置凭据听起来很重要,微软可能已经修复了它)。
复制:
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构建和最新的开发工具,所以我也没有过时。
正如Yuval Itzchakov在问题下面评论的那样,在这种情况下,你可以直接执行
httpc.Credentials = new NetworkCredential("", "")
或
httpc.Credentials = credentials.GetCredential(uri, authType).
我仍然很好奇为什么W10打破了W8.1的工作,但现在它不那么重要了。