动态导航 web 服务错误 401 未经授权
dynamics nav webservice error 401 Unauthorized
使用动态导航 Web 服务时出现以下错误:
The request failed with HTTP status 401: Unauthorized.
但是,当我在浏览器中尝试时,它起作用了。我尝试了以下方法,但仍然无法正常工作:
service.UseDefaultCredentials = true;
service.PreAuthenticate = true;
还有:
service.Credentials = new System.Net.NetworkCredential("XXXXX", "XXXX","XXXX");
我什至尝试使用动态导航访问键,但也没有用。
有什么新建议吗?
有几处可能是错误的。
您是否检查过服务层设置的身份验证类型?
是否有默认公司集(或者您是否在 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 中删除 domain - 只需使用您的 用户名和密码(如果客户端和服务器在同一个域中,显然)。
我知道这个线程已有 4 年多了,但我想如果有人正在搜索这个问题,他会像我一样遇到这个问题。
当前 NTLM 和 Xamarin 存在问题(在我写这篇文章的时候,问题也存在于 MacOS 上的 .net 核心中)。
查看链接:
iOS: https://github.com/xamarin/xamarin-macios/issues/7770
解决方法是使用"MonoWebRequestHandler"。对于 Android 和 iOS 的组合解决方案,请查看我最新的 post here
我希望我可以用这个 post 节省一些时间!
使用动态导航 Web 服务时出现以下错误:
The request failed with HTTP status 401: Unauthorized.
但是,当我在浏览器中尝试时,它起作用了。我尝试了以下方法,但仍然无法正常工作:
service.UseDefaultCredentials = true;
service.PreAuthenticate = true;
还有:
service.Credentials = new System.Net.NetworkCredential("XXXXX", "XXXX","XXXX");
我什至尝试使用动态导航访问键,但也没有用。
有什么新建议吗?
有几处可能是错误的。
您是否检查过服务层设置的身份验证类型? 是否有默认公司集(或者您是否在 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 中删除 domain - 只需使用您的 用户名和密码(如果客户端和服务器在同一个域中,显然)。
我知道这个线程已有 4 年多了,但我想如果有人正在搜索这个问题,他会像我一样遇到这个问题。
当前 NTLM 和 Xamarin 存在问题(在我写这篇文章的时候,问题也存在于 MacOS 上的 .net 核心中)。
查看链接:
iOS: https://github.com/xamarin/xamarin-macios/issues/7770
解决方法是使用"MonoWebRequestHandler"。对于 Android 和 iOS 的组合解决方案,请查看我最新的 post here
我希望我可以用这个 post 节省一些时间!