我正在尝试从 .NET Core 应用程序生成 SSRS 报告,并且我正在遵循此教程
但我遇到以下异常
HTTP 请求未经客户端身份验证方案“Ntlm”的授权。从服务器收到的身份验证标头是“NTLM”。
当我删除凭据并将
BasicHttpSecurityMode.None
与 HttpClientCredentialType.None
一起使用时,一切正常,但我需要向服务添加凭据
我知道这个错误有很多答案,但我已经尝试了几乎所有的答案,但没有任何对我有用
这是我尝试过的:
我尝试将
ProxyCredentialType
添加为 Ntlm
但我得到了同样的错误
var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.Ntlm;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
binding.MaxReceivedMessageSize = 10485760; //10MB limit
var rsExec = new ReportExecutionServiceSoapClient(binding, new EndpointAddress(SSRSReportExecutionUrl));
var clientCredentials = new NetworkCredential(SSRSUsername, SSRSPassword, ".");
if (rsExec.ClientCredentials != null)
{
rsExec.ClientCredentials.Windows.AllowedImpersonationLevel =System.Security.Principal.TokenImpersonationLevel.Impersonation;
rsExec.ClientCredentials.Windows.ClientCredential = clientCredentials;
}
我还尝试将
HttpClientCredentialType.Ntlm
替换为 HttpClientCredentialType.Windows
但出现此错误
System.ServiceModel.Security.MessageSecurityException:HTTP 请求未经客户端身份验证方案“协商”授权。从服务器收到的身份验证标头是“NTLM”
一些答案建议修改
web.config
文件或使用 Microsoft 服务配置编辑器对其进行编辑,但在我的情况下我没有找到此文件或此编辑器,我认为这些存在于 .NET 框架中,而不是 .NET 核心中,但我不确定
知道我应该做什么来修复这个错误吗?
据我所知,网上大部分案例都是用IIS部署,并使用Windows身份验证进行验证。如果您使用的是 IIS,只需更改启用的 Windows 身份验证,然后尝试按照本文中的步骤操作。
如果不起作用,请尝试使用 Kerberos 并在使用之前注册 SPN。