2013-10-08 475 views
8

我的應用程序是在Asp.Net MVC3C#編碼,我在Visual Studio 2008SQL Server Business Intelligence Developement Studio一個SSRS的解決方案,我打電話SSRS通過我Asp.Net MVC3申請報告。我的申請被罰款運行幾天回去,但突然向我如下得到一個錯誤:請求失敗,HTTP狀態401:未經授權在SSRS

我的錯誤:

The request failed with HTTP status 401: Unauthorized. 

我嘗試

  1. 我SSRS報告部署在我的local server上。我在我的SSRS報告解決方案的數據源中正確設置了我的憑證。

  2. 我嘗試添加標籤在我的web.config <identity impersonate="true" userName="Domain\username" password="Password" />

  3. 我嘗試添加IReportServerCredentials reportCredentials = new ReportServerCredentials("MyUserName", "MyPassword", "ServerName");

  4. 我跑在Visual Studio爲'Run as Administrator'

  5. 我想在這個環節Creating a key using RegEdit

  6. 提到的更新 的解決方案,我嘗試了以下解決方案很好,但相同的結果:Unauthorized error in SSRS

上述解決方案的無工作,但是當我運行相同的解決方案,而不是解決方案運行良好,並沒有顯示錯誤。它只有當我運行從我的機器的解決方案,然後我得到的錯誤The request failed with HTTP status 401: Unauthorized.

+0

@KuldipMCA其實,不知道這是怎麼固定的。有一天我嘗試了我的解決方案,並沒有遇到同樣的問題。很奇怪。 –

回答

1

試試這個

public void GetConnectionOfReportServer() 
     { 
      try 
      { 
       NetworkCredential credential = new NetworkCredential("administrator", "[email protected]", "Domain"); 
       this.reportViewer1.ServerReport.ReportServerCredentials.NetworkCredentials = credential; 

       //select where the report should be generated with the report viewer control or on the report server using the SSRS service. 
       this.reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local; 
       this.reportViewer1.ServerReport.ReportServerUrl = new Uri(@"http://localhost/ReportServer"); 
      } 

      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 


     } 
0

請求,HTTP狀態401未經授權失敗。 SSRS 2008

從web.config中添加關鍵= 「RS_UName」 值= 「拉吉夫-PC」 ----不正確

與您的系統名稱(拉吉夫)不是SQL服務器的名稱,如拉吉夫-PC更換輸入的值

總是有系統名稱不是sql server名稱。

從web.config中添加關鍵=「RS_UName」值=「拉吉夫」 ---正確

2

我也得到同樣的錯誤,

The request failed with HTTP status 401: Unauthorized. 

讓我分享我的嘗試,它現在工作正常。

public class CustomSSRSCredentials : IReportServerCredentials 
    { 
     private string _SSRSUserName; 
     private string _SSRSPassWord; 
     private string _DomainName; 

     public CustomSSRSCredentials(string UserName, string PassWord, string DomainName) 
     { 
      _SSRSUserName = UserName; 
      _SSRSPassWord = PassWord; 
      _DomainName = DomainName; 
     } 

     public System.Security.Principal.WindowsIdentity ImpersonationUser 
     { 
      get { return null; } 
     } 

     public ICredentials NetworkCredentials 
     { 
      get { return new NetworkCredential(_SSRSUserName, _SSRSPassWord, _DomainName); } 
     } 

     public bool GetFormsCredentials(out Cookie authCookie, out string user, 
     out string password, out string authority) 
     { 
      authCookie = null; 
      user = password = authority = null; 
      return false; 
     } 
    } 

裏面page_load事件,

if (!Page.IsPostBack) 
{ 
    ReportViewer1.ProcessingMode = ProcessingMode.Remote; 
    IReportServerCredentials ssrscredentials = new CustomSSRSCredentials("MyUserName", "MyPassword", "ServerName"); 
    ServerReport serverReport = ReportViewer1.ServerReport; 
    ReportViewer1.ServerReport.ReportServerCredentials = ssrscredentials; 
    serverReport.ReportServerUrl = new Uri("ReportPathKey"); 
    serverReport.ReportPath = "/Reports/MyReport"; 
    serverReport.Refresh(); 
} 

這爲我工作!

+0

非常感謝你讓我的一天..................... –

+1

非常歡迎你! :)快樂的日子(y) – pedram

0

curiousguy的回答解決我的問題。謝啦!

另外,檢查你的web.config。它必須具有一定以下:

`

<system.web> 
<httpHandlers> 
     <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" 
     validate="false" /> 
    </httpHandlers> 
</system.web> 
<system.webServer> 
<handlers> 
     <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" 
     type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, 
      PublicKeyToken=89845dcd8080cc91" /> 
</handlers> 
    </system.webServer> 

`

公共令牌必須相同,否則將炸燬另一個錯誤。

0

我有同樣的問題。一切工作正常,然後突然我收到報告查看器iframe中的401而不是我的報告在調試模式(本地主機)。我一直在擺弄與設置,以獲得它的活動站點上運行,所以我認爲我做錯了什麼......

試了幾件事情,然後決定只重新啓動,你猜怎麼着???我的域名密碼已過期,因此驗證失敗! 愚蠢愚蠢的我!

想我會在這裏添加我的解決方案的情況下,人們遇到同樣的愚蠢形勢和寬鬆的寶貴時間搞清楚他們做了什麼錯?

相關問題