0

使用动态导航 Web 服务时,出现以下错误:

请求失败,HTTP 状态为 401:未授权。

但是,当我在浏览器中尝试它时,它可以工作。我尝试了以下方法,但仍然无法正常工作:

service.UseDefaultCredentials = true;
service.PreAuthenticate = true;

还 :

service.Credentials = new System.Net.NetworkCredential("XXXXX", "XXXX","XXXX");

我什至尝试使用动态导航访问键,但也没有用。

有什么新建议吗?

4

4 回答 4

1

我知道这个线程已有 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 组合解决方案,请查看我的最新帖子

我希望我可以通过这篇文章节省一些时间!

于 2020-04-30T11:57:02.393 回答
0

我认为你的代码应该是这样的

service.UseDefaultCredentials = false;
service.Credentials = new System.Net.NetworkCredential("XXXXX", "XXXX","XXXX");

如果您使用 PHP 或 Java 或 XAMARIN 使用 NTLM 身份验证,则必须启用 NTLM 设置属性身份验证

于 2019-01-28T16:45:58.127 回答
0

有几件事可能是错误的。

您是否检查了服务层设置为哪种身份验证?是否有默认公司集(或者您是否在 URL 中选择公司)。NTLM 是打开还是关闭;这些都是可能弹出此错误的所有可能原因。

于 2016-02-16T20:36:51.380 回答
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中删除- 只需使用您的用户名密码(如果客户端和服务器显然在同一个域中)。

于 2019-11-12T15:47:54.717 回答