动态导航网络服务错误 401 未经授权
本文关键字:授权 错误 导航 网络服务 动态 | 更新日期: 2023-09-27 18:34:43
使用动态导航Web服务时,出现以下错误:
请求失败,HTTP 状态为 401:未经授权。
但是当我在浏览器中尝试时,它可以工作.我尝试了以下方法,但仍然无法正常工作:
service.UseDefaultCredentials = true;
service.PreAuthenticate = true;
也:
service.Credentials = new System.Net.NetworkCredential("XXXXX", "XXXX","XXXX");
我什至尝试使用动态导航访问键,但它也没有用。
有什么新建议吗?
我知道这个线程已经有 4 年多的历史了,但我想如果 somone 目前正在寻找这个问题,他会遇到这个 trhead,就像我一样。
NTLM和Xamarin目前存在问题(在我写这篇文章的那一刻,这个问题也存在于MacOS上的.net核心中(。
请参阅链接:
iOS:https://github.com/xamarin/xamarin-macios/issues/7770
安卓:https://developercommunity.visualstudio.com/content/problem/756697/last-visual-studio-update-brakes-ntlm-authenticati.html
解决方案是使用"MonoWebRequestHandler"。对于Android和iOS解决方案的组合,请查看我的最新帖子
这里我希望我能通过这篇文章节省索蒙斯的时间!
有几件事可能是错误的。
是否检查了服务层设置为哪种身份验证?是否有默认公司集(或者您是否在 URL 中选择公司(。NTLM 是打开还是关闭;这些都是可能弹出此错误的原因。
我认为你的代码应该是这样的
service.UseDefaultCredentials = false;
service.Credentials = new System.Net.NetworkCredential("XXXXX", "XXXX","XXXX");
如果您使用的是 PHP 或 Java 或 XAMARIN,则必须启用 NTLM 设置属性身份验证使用 NTLM 身份验证
下面的这段代码对我有用(我并没有真正调整服务层 - 它或多或少有默认设置(:
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中删除域 - 只需使用您的用户名和密码(显然,如果客户端和服务器位于同一域中(。