.net Windows凭据未使用Windows.Web.Http.HttpClient通过
我的应用程序正在尝试向我们域上的服务发出请求,但它无法通过运行该应用程序的用户的windows凭据,这导致每次服务调用都有一个登录请求(连续有几个…非常烦人) 如果我将.net Windows凭据未使用Windows.Web.Http.HttpClient通过,.net,win-universal-app,.net,Win Universal App,我的应用程序正在尝试向我们域上的服务发出请求,但它无法通过运行该应用程序的用户的windows凭据,这导致每次服务调用都有一个登录请求(连续有几个…非常烦人) 如果我将ServerCredential设置为PasswordCredential(使用HttpBaseProtocolFilter)并使用硬编码信息(资源、用户名、密码),则一切正常,但这还不够,因为它需要能够通过使用应用程序的任何用户的凭据 例如: var filter = new HttpBaseProtocolFilter {
ServerCredential
设置为PasswordCredential
(使用HttpBaseProtocolFilter)并使用硬编码信息(资源、用户名、密码),则一切正常,但这还不够,因为它需要能够通过使用应用程序的任何用户的凭据
例如:
var filter = new HttpBaseProtocolFilter
{
ServerCredential = new PasswordCredential("ourServiceHost", "username", "password")
});
var client = new HttpClient(filter);
我在某个地方读到,不设置ServerCredential
应该会导致它默认为当前用户的windows凭据,但这似乎没有发生
想法?您需要在应用程序的Package.AppxManifest中选择企业身份验证功能 要避免出现用户名和密码提示,请禁用UI:
HttpBaseProtocolFilter filter = new BaseProtocolFilter();
filter.AllowUI = false;
HttpClient client = new HttpClient(filter);
我添加了它,但没有变化。我仍然被提示输入用户名和密码。我如何获得未成功响应澄清:我不再被提示,但现在服务器的响应是401您确定服务器配置正确吗?您可以使用PowerShell测试它:
Invoke WebRequest-Method GET-Uri“http://example.com“-UseDefaultCredentials
是的,如果我在powershell中运行,我会得到一个OK响应。您是否找到此问题的解决方案?我面临着同样的情况,我的行为和你完全一样。如果我只有var filter=newhttpbaseprotocolfilter();系统提示我输入凭据,呼叫成功。如果我有var filter=newhttpbaseprotocolfilter{AllowUI=false};它失败了,错误是401-未经授权。这是很久以前的事了,我不记得曾经真正找到过解决方案,对不起。这是我不再从事的工作中工具的附带项目,不是问题。谢谢你回复我。如果我找到了解决方案,我也会把它贴在这里。