动态nav web webservice错误401未经授权

时间:2016-02-15 15:04:45

标签: c# soap dynamic nav unauthorized

使用动态导航网络服务时,我收到以下错误:

  

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

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

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

还:

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

我甚至尝试使用动态导航访问密钥,但它也没有工作。

有任何新建议吗?

4 个答案:

答案 0 :(得分:1)

我知道此线程已有4年以上的历史了,但我想如果somone当前正在寻找此问题,他将像我一样遇到这个问题。

NTLM和Xamarin当前存在问题(在撰写本文时,该问题在MacOS的.net内核中也存在。

查看链接:

iOS:https://github.com/xamarin/xamarin-macios/issues/7770

Android:https://developercommunity.visualstudio.com/content/problem/756697/last-visual-studio-update-brakes-ntlm-authenticati.html

解决方案是使用“ 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 中删除-只需使用您的用户名密码(显然,如果客户端和服务器在同一个域中)。