2012-10-02 2 views
2

보고 서버에서 SSRS 2008 R2 보고서를 실행하고 있습니다. 보고서 관리자 또는 웹 서비스 URL을 사용하여 보고서에 액세스하면 정상적으로 작동합니다.SSRS 및 ASP.net ReportViewer rsAccessDenied

http://mycomputer/ReportServer 

http://mycomputer/Reports 

내가 웹폼 웹 사이트에의 ReportViewer를 추가하고 내 보고서에 보고서 경로

http://mycomputer/reportserver 

를 가리 키는 나에게 액세스 거부 오류를 제공합니다 VS.net의 웹 서버를 사용하여 웹 사이트를 실행할 때.

'mycomputer \ myusername'사용자에게 부여 된 권한으로는이 작업을 수행하기에 충분하지 않습니다. (rsAccessDenied)

다음은 aspx 페이지에서 사용하고있는 정확한 코드입니다.

<asp:ScriptManager ID="ScriptManager1" runat="server"> 
</asp:ScriptManager> 
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote" Font-Names="Verdana" 
    Font-Size="8pt" InteractiveDeviceInfos="(Collection)" WaitMessageFont-Names="Verdana" 
    WaitMessageFont-Size="14pt" Width="712px"> 
    <ServerReport ReportPath="/MyReports" ReportServerUrl="http://mycomputer/reportserver" /> 
</rsweb:ReportViewer> 

mycomputer \ myusername은 컴퓨터의 관리자입니다. 또한 ReportManager의 관리자로 추가했습니다.

관리자 모드에서 IE를 사용하여 실행하고 있습니다.

액세스가 거부 된 원인은 무엇입니까?

나는 다른 사람들에게 문제가 있다는 것을 읽었지 만, 대부분 2008R2를위한 것이 아니므로 그들이 한 일을 시도하는 방법을 알 수 없었습니다. 구성 할 IIS가없고 보고서에 액세스 할 수있는 IUSR이 없습니다.

SSRS 로그는 다른 정보없이 같은 오류 메시지 만 표시합니다.

답변

2

IReportServerCredentials를 구현하는 인스턴스 클래스를 만들면 문제가 해결됩니다. 다음 클래스를 추가하고 다음과 같이 전화 : 필 Clewes에

ReportViewer1.ServerReport.ReportServerCredentials = new ReportServerCredentials("username", "pwd", "domain"); 

/// <summary> 
/// Local implementation of IReportServerCredentials 
/// </summary> 
public class ReportServerCredentials : IReportServerCredentials 
{ 
    private string _userName; 
    private string _password; 
    private string _domain; 

    public ReportServerCredentials(string userName, string password, string domain) 
    { 
     _userName = userName; 
     _password = password; 
     _domain = domain; 
    } 

    public WindowsIdentity ImpersonationUser 
    { 
     get 
     { 
      // Use default identity. 
      return null; 
     } 
    } 

    public ICredentials NetworkCredentials 
    { 
     get 
     { 
      // Use default identity. 
      return new NetworkCredential(_userName, _password, _domain); 
     } 
    } 

    public bool GetFormsCredentials(out Cookie authCookie, out string user, out string password, out string authority) 
    { 
     // Do not use forms credentials to authenticate. 
     authCookie = null; 
     user = password = authority = null; 
     return false; 
    } 
} 

감사 : link

+1

내 실수, 당신은 ReportExecutionService를 사용하는 경우 그냥 답을 갱신됩니다 NetworkCredential을 사용할 수 있습니다 –

관련 문제