使用动态导航网络服务时,我收到以下错误:
请求失败,HTTP状态为401:未经授权。
然而,当我在浏览器中尝试它时,它可以工作。我尝试了以下但仍然无法正常工作:
service.UseDefaultCredentials = true;
service.PreAuthenticate = true;
还:
service.Credentials = new System.Net.NetworkCredential("XXXXX", "XXXX","XXXX");
我甚至尝试使用动态导航访问密钥,但它也没有工作。
有任何新建议吗?
答案 0 :(得分:1)
我知道此线程已有4年以上的历史了,但我想如果somone当前正在寻找此问题,他将像我一样遇到这个问题。
NTLM和Xamarin当前存在问题(在撰写本文时,该问题在MacOS的.net内核中也存在。
查看链接:
iOS:https://github.com/xamarin/xamarin-macios/issues/7770
解决方案是使用“ MonoWebRequestHandler”。有关Android和iOS解决方案的组合,请查看我的最新文章here
我希望我可以通过这篇文章节省时间!
答案 1 :(得分:0)
有些事情可能是错的。
您是否检查了服务层设置的身份验证类型? 是否有默认公司集(或者您是否在URL中选择公司)。 NTLM是开启还是关闭;这些都可能是弹出此错误的原因。
答案 2 :(得分:0)
我认为您的代码应该是这样
service.UseDefaultCredentials = false;
service.Credentials = new System.Net.NetworkCredential("XXXXX", "XXXX","XXXX");
如果使用PHP或Java或XAMARIN,则必须启用NTLM设置属性身份验证 使用NTLM身份验证
答案 3 :(得分:0)
下面的这段代码对我有用(我并没有真正调整服务层-它或多或少具有默认设置):
service.ClientCredentials.Windows.ClientCredential.Domain = <domain>;
service.ClientCredentials.Windows.ClientCredential.UserName = <username>;
service.ClientCredentials.Windows.ClientCredential.Password = <password>;
service.ClientCredentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Delegation;
如果上述方法不起作用,请尝试从 NetworkCredential 中删除域-只需使用您的用户名和密码(显然,如果客户端和服务器在同一个域中)。