Вот некоторый код из проекта Web Forms, в котором я недавно работал в команде:
private void SetCredentials()
{
var userName = ConfigurationManager.AppSettings["SSRSUserName"];
var passwordEncrypted = ConfigurationManager.AppSettings["SSRSUserPasswordEncrypted"];
var passwordPlainText = SI.Crypto3.Crypto.Decrypt(passwordEncrypted, PASSPHRASE);
var domain = ConfigurationManager.AppSettings["SSRSUserDomain"];
if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(passwordPlainText) && !string.IsNullOrEmpty(domain))
{
this.EventsHubReportViewer.ServerReport.ReportServerCredentials = new ReportServerCredentials(userName, passwordPlainText, domain);
}
}
Это C #, но, надеюсь, вы видите, что важная часть - это последняя строка.Я думаю, что эквивалент в вашем случае должен быть:
ReportViewer1.ServerReport.ReportServerCredentials = New ReportServerCredentials(userName, password, domain)
Значение domain
может быть пустым String
, если вы находитесь в том же домене, что и сервер.
EDIT:
Я посмотрел более внимательно, и класс ReportServerCredentials
, который использует код, является нашим собственным.В вашем случае вы можете использовать класс Microsoft.ReportViewer.WinForms.ReportServerCredentials
, который, я думаю, не имеет такого конструктора.Просмотр документации для свойства NetworkCredentials
этого типа показывает, что вам нужно сделать следующее:
Dim credentials As New NetworkCredential(userName, password, domain)
ReportViewer1.ServerReport.ReportServerCredentials.NetworkCredentials = credentials