2017-10-04 304 views
0

在我的測試服務器上使用ReportViewer時,出現401未經授權的錯誤。在我的本地環境中(配置指向測試服務器的配置),我可以無問題地進行連接。我試過看下面的解決方案,但沒有運氣。 OnetwothreeReportViewer錯誤401查看用戶登錄

我使用的身份驗證模式是Windows,雖然我的Windows憑據可以訪問報表服務器,但仍無法連接。

在我的web.config

 <system.web> 
     <customErrors mode="Off" /> 
     <authentication mode="Windows" /> 
     <authorization> 
      <deny users="?" /> 
     </authorization>     
     ... 

我控制器

private ReportViewer _reportViewer; 

public ReportController() 
{ 
    _reportViewer = new ReportViewer(); 
    _reportViewer.ProcessingMode = ProcessingMode.Remote; 
    _reportViewer.SizeToReportContent = false; 
    _reportViewer.Width = Unit.Percentage(100); 
    _reportViewer.Height = Unit.Pixel(893); 
    string RptServerURL = ConfigurationManager.AppSettings["MyReportServerUrl"]; 

    _reportViewer.ServerReport.ReportServerUrl = new Uri(RptServerURL); 
} 

所以,我可以查明錯誤,如何其中我可以看到我的代碼試圖用戶通過身份驗證?我檢查了例外情況,但是我得到的所有信息都是未經授權的,沒有告訴我正在使用的用戶。

回答

0

我能夠找出答案,更重要的是如何解決導致401錯誤的問題。

首先回答我的問題,我可以通過檢查

System.Security.Principal.WindowsIdentity.GetCurrent().Name 

當我在本地環境中運行的應用程序(報表服務器中指出,測試URL)來找出用戶,它是用Windows登錄。在測試服務器下,它使用IIS APPPOOL。我嘗試手動設置報表服務器憑據,但沒有成功。

ReportViewer rv; 
rv.ServerReport.ReportServerCredentials = new ReportServerCredentials("userName", "password", "domain"); 

但是,我注意到通過檢查IIS管理器登錄是從哪裏來的。

enter image description here

當我改變身份爲NetworkService,應用程序能夠正確訪問報表服務器。