У меня есть следующий контроллер (ReportsController.cs)
using Microsoft.Reporting.WebForms;
using System;
using System.Configuration;
using System.Web.Mvc;
using System.Net;
namespace ActiveDirectoryAuthentication.Controllers
{
public class ReportsController : Controller
{
// GET: Reports
public ActionResult Index()
{
string ssrsUrl = ConfigurationManager.AppSettings["SSRSReportsUrl"].ToString();
ReportViewer viewer = new ReportViewer();
IReportServerCredentials irsc = new CustomReportCredentials("uname", "pwd", "domain");
viewer.ServerReport.ReportServerCredentials = irsc;
viewer.ProcessingMode = ProcessingMode.Remote;
viewer.SizeToReportContent = true;
viewer.AsyncRendering = true;
viewer.ServerReport.ReportServerUrl = new Uri(ssrsUrl);
viewer.ServerReport.ReportPath = "/Temperature_Graphs_Reports/Temperature_Graphs";
viewer.ServerReport.Refresh();
ViewBag.ReportViewer = viewer;
return View();
}
}
public class CustomReportCredentials : IReportServerCredentials
{
private string _UserName;
private string _PassWord;
private string _DomainName;
public CustomReportCredentials(string UserName, string PassWord, string DomainName)
{
_UserName = UserName;
_PassWord = PassWord;
_DomainName = DomainName;
}
public System.Security.Principal.WindowsIdentity ImpersonationUser
{
get { return null; }
}
public ICredentials NetworkCredentials
{
get { return new NetworkCredential(_UserName, _PassWord, _DomainName); }
}
public bool GetFormsCredentials(out Cookie authCookie, out string user,
out string password, out string authority)
{
authCookie = null;
user = password = authority = null;
return false;
}
}
}
и следующий вид (Index.cs html):
@using ReportViewerForMvc;
@if (ViewBag.ReportViewer != null)
{
@Html.ReportViewer(ViewBag.ReportViewer as Microsoft.Reporting.WebForms.ReportViewer)
}
Я могу просмотреть отчет без Передача учетных данных (передача их вручную).
При передаче учетных данных у меня появляется следующее сообщение об ошибке:
Ошибка сервера в приложении '/'.
Запрос не выполнен с HTTP-статус 401: не авторизован. Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: система. Net .WebException: запрос не выполнен с состоянием HTTP 401: не авторизован.
Ошибка источника:
Во время выполнения возникло необработанное исключение текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.
Трассировка стека:
[WebException: запрос не выполнен с состоянием HTTP 401: не авторизовано.] Microsoft. Reporting.WebForms.Internal. Soap .ReportingServices2005.Execution.RSExecutionConnection.GetSecureMethods () +192 Microsoft.Reporting.WebForms.Internal. Soap .ReportingServices2005.Execution.RSExecutionConnection.IsSname .Reporting.WebForms.Internal. Soap .ReportingServices2005.Execution.RSExecutionConnection.SetConnectionSSLForMethod (имя метода String) + 12
Microsoft.Reporting.WebForms.Internal. Soap .ReportingServices2005.ExecutionInteoc. ProxyMethod 1 initialMethod, ProxyMethod
1 retryMethod) +449 Microsoft.Reporting.WebForms.Internal. Soap .ReportingServices2005.Execution.RSExecutionConnection.LoadReport (Строковый отчет, String HistoryID) + 180
Microsoft.Reporting .WebForms. *
ReportViewerFor Mvc .ReportViewerWebForm.Page_Load (Отправитель объекта, EventArgs e) + 5
System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Отправитель объекта, EventArgs e) +52 System.Web.UI.Control.OnLad ( EventArgs e) + 97
System.Web.UI.Control.LoadRecursive () + 61
System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) + 693
Это значение rsreportserver.config
<AuthenticationTypes>
<RSWindowsNTLM/>
</AuthenticationTypes>
В Report Server Configuration Manager
в Web Portal URL
, когда я нажимаю URL, у меня появляется это сообщение об ошибке
The service is not available.
The report server isn’t configured properly. Contact your system administrator to resolve the issue. System administrators: The report server Web Portal URLs and Web Service URLs don’t match. Use Reporting Services Configuration Manager to configure the URLs and ensure they match.