Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在UWP中的System.Net.HttpClient请求中使用默认凭据_C#_.net_Uwp_System.net - Fatal编程技术网

C# 在UWP中的System.Net.HttpClient请求中使用默认凭据

C# 在UWP中的System.Net.HttpClient请求中使用默认凭据,c#,.net,uwp,system.net,C#,.net,Uwp,System.net,我们正在将Windows 8.1应用程序移植到UWP,并且在发送单点登录的默认用户凭据时遇到问题。尽管在处理程序上设置了UseDefaultCredentials=true,但似乎没有设置凭据。这段代码在Windows8.1中运行 using (var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true })) { // client._handle.Credentials is n

我们正在将Windows 8.1应用程序移植到UWP,并且在发送单点登录的默认用户凭据时遇到问题。尽管在处理程序上设置了
UseDefaultCredentials=true
,但似乎没有设置凭据。这段代码在Windows8.1中运行

using (var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true }))
{
    // client._handle.Credentials is null
    // This call fails authentication with a 401 
    // and Fiddler shows no attempt to pass authentication
    var response = await client.GetStringAsync(new Uri(GlobalConfig.Config.BaseUri, "Presenter/SingleSignOn"));
    ...
}
如上所述,在调试过程中,我可以看到
客户端。\u handle.Credentials
null

我还尝试从
System.Net.CredentialCache
设置凭据,但这些凭据似乎返回空凭据,并且它们还导致
null
客户端。\u handle.credentials

var handler = new HttpClientHandler() { Credentials = System.Net.CredentialCache.DefaultCredentials };
var handler = new HttpClientHandler() { Credentials = System.Net.CredentialCache.DefaultNetworkCredentials };
我已经根据仔细检查了我们声明的功能,它们看起来很好。我们宣布了以下能力:

  • 企业认证
  • 互联网(客户端)
  • 专用网络(客户端和服务器)
  • 可移动存储
我尝试过使用
Windows.Web.HttpClient
,但它也有同样的问题——它找不到默认凭据,因此会通过UI进行提示。我错过了什么明显的东西吗?还是不明显的

TL;DR-我在
HttpClient
请求中传递默认用户凭据时遇到问题


编辑:我应该补充一点,身份验证通常是有效的。如果我显式地传递用户名/密码,那么它就工作了。显然,这不是我们的目标。

我会从手动使用IE开始,然后尝试连接。查看您收到的错误消息。通常,网页会给出问题的线索,就像需要证书一样。您可能需要进入IE选项,允许某些url被允许或取消阻止url。IE使用与HttpClient相同的凭据。默认凭据来自windows用户帐户,可以使用IE浏览器和更改选项手动修复该帐户。另一件有用的事情是使用像wireshark或fiddler这样的嗅探器,比较go和bad PC之间的http数据包。比较Headers谢谢!使用IE帮助我确定我的互联网设置是问题所在。事实证明,我的服务器不在我的intranet站点列表中。实际上,Win 8.1应用程序不需要将服务器URL添加到我的intranet站点,因此这不是一个完整的解决方案。我将继续调查,希望它能正常工作。您好@NSouth,您是否找到了使DefaultCredentials正常工作而不向intranet站点添加URL的方法?