В моем детальном анализе я понял, что проблема была в том, что учетные данные, настроенные в serviceObject.credential ИЛИ ServerReport.ReportServerCredentials , были неверными. Это можно исправить двумя различными способами: либо установить учетные данные по умолчанию с кодом ниже
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;//"rs" is report object
, либо найти приведенный ниже код и установить надлежащие учетные данные аутентифицированного пользователя в коде
public WindowsIdentity ImpersonationUser
{
get
{
// Use the default Windows user. Credentials will be
// provided by the NetworkCredentials property.
return null;
}
}
public ICredentials NetworkCredentials
{
get
{
// Read the user information from the Web.config file.
// By reading the information on demand instead of
// storing it, the credentials will not be stored in
// session, reducing the vulnerable surface area to the
// Web.config file, which can be secured with an ACL.
// User name
string userName =
<<AccurateUserName;>>
// Password
string password =
<<AccuratePassword;>>
// Domain
string domain = <<AccurateDomainName;>>
return new NetworkCredential(userName, password, domain);
}
}
В Чтобы проверить, есть ли у какого пользователя доступ, нам нужно ввести URL-адрес службы, заканчивающийся asmx ( http: /MyServiceHostedServer/MyService.asmx) в веб-браузере. Он подскажет имя пользователя и пароль. Укажите имя пользователя: Домен \ Имя пользователя и пароль. Если мы сможем увидеть файл wsdl xml, то у этого пользователя есть доступ.