【发布时间】:2015-05-19 11:50:20
【问题描述】:
我知道这在技术上仍然是一个预览版,这可能是一个已知(或未知)的问题,但我也可能遗漏了一些明显的问题(尤其是因为无法设置凭据听起来很重要,以至于微软可能已经修复了已经)。
复制:
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类中没有GetCredential就抛出异常,所以不是这样的。
相同的代码在 Windows 8.1 应用程序中完美运行。
我正在使用 VS2015 RC、最新的 W10 构建和最新的开发工具,所以我也没有过时。
【问题讨论】:
-
httpc.Credentials = credentials;你不应该打电话给GetCredentials吗? -
哈哈!这确实解决了问题。仍然有一些奇怪的事情发生(设置自定义 Credentials 对象在 W8.1 中有效,加上 AFAIK 我的方式允许您提供多个凭据(每个 URI*authType 一个),并且在需要时将正确的凭据传递给 HttpClient),但你是在这种情况下完全正确。不敢相信我错过了!
-
有时小事会过去 :)
标签: c# win-universal-app