Solved

ReportViewer 500 - Internal server error.

Posted on 2009-07-15
4
660 Views
Last Modified: 2012-06-27
Hello

I have setup a reportviewer on a asp.net webform.  It worked fine before I tried using IReportServerCredentials, it just prompted me for a username/password.  Now after implementing the credentials I keep getting a 500 error.  What am I doing wrong?
Imports System.Data

Imports System.Web

Imports System.Web.UI

Imports Microsoft.Reporting.Webforms

Imports System

Imports System.Net

Imports System.Configuration

Imports System.Collections

Imports System.Web.Security

Imports System.Security.Principal

Imports System.Web.UI.WebControls

Imports System.Web.UI.WebControls.WebParts

Imports System.Web.UI.HtmlControls

 

 

Public Class GM

    Inherits System.Web.UI.Page

    Friend WithEvents SqlConnection As System.Data.SqlClient.SqlConnection

    Friend WithEvents SqlCommand As System.Data.SqlClient.SqlCommand

    Public strclientid As String = "https://www.mysite.com/ReportServer/Pages/ReportViewer.aspx?/" & HttpContext.Current.Request.Cookies("clientid").Value & "/"

 

    Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        ReportViewer1.ServerReport.ReportServerUrl = New System.Uri("https://www.mysite.com/ReportServer/Pages/ReportViewer.aspx?/")

        ReportViewer1.ServerReport.ReportPath = HttpContext.Current.Request.Cookies("clientid").Value & "/execrecap&rs:Command=Render"

        ReportViewer1.ShowCredentialPrompts = False

        ReportViewer1.ServerReport.ReportServerCredentials = New MyReportServerCredentials()

 

        If Not Page.IsPostBack Then

            Dim Menu1 As Menu

            Menu1 = Me.Menu1

            Dim value As MenuItemBindingCollection

            value = Menu1.DataBindings

            Me.Page.DataBind()

            'menu setup here

            End If

    End Sub

End Class

Public NotInheritable Class MyReportServerCredentials

    Implements IReportServerCredentials

 

    Public ReadOnly Property ImpersonationUser() As WindowsIdentity _

            Implements IReportServerCredentials.ImpersonationUser

        Get

 

            'Use the default windows user.  Credentials will be

            'provided by the NetworkCredentials property.

            Return Nothing

 

        End Get

    End Property

 

    Public ReadOnly Property NetworkCredentials() As ICredentials _

            Implements IReportServerCredentials.NetworkCredentials

        Get

 

            'Read the user information from the web.config file.  

            'By reading the information on demand instead of storing 

            'it, the credentials will not be stored in session, 

            'reducing the vulnerable surface area to the web.config 

            'file, which can be secured with an ACL.

 

            'User name

            Dim userName As String = _

                ConfigurationManager.AppSettings("MyReportViewerUser")

 

            If (String.IsNullOrEmpty(userName)) Then

                Throw New Exception("Missing user name from web.config file")

            End If

 

            'Password

            Dim password As String = _

                ConfigurationManager.AppSettings("MyReportViewerPassword")

 

            If (String.IsNullOrEmpty(password)) Then

                Throw New Exception("Missing password from web.config file")

            End If

 

            'Domain

            Dim domain As String = _

                ConfigurationManager.AppSettings("MyReportViewerDomain")

 

            If (String.IsNullOrEmpty(domain)) Then

                Throw New Exception("Missing domain from web.config file")

            End If

 

            Return New NetworkCredential(userName, password, domain)

 

        End Get

    End Property

 

    Public Function GetFormsCredentials(ByRef authCookie As Cookie, _

                                   ByRef userName As String, _

                                   ByRef password As String, _

                                   ByRef authority As String) _

                                   As Boolean _

       Implements IReportServerCredentials.GetFormsCredentials

 

        authCookie = Nothing

        userName = Nothing

        password = Nothing

        authority = Nothing

 

        'Not using form credentials

        Return False

 

    End Function

End Class

Open in new window

0
Comment
Question by:jay-are
  • 2
4 Comments
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 24859262
Set the debug=true and disable the customerror pages in the web.config file to see where the problem is.
0
 

Author Comment

by:jay-are
ID: 24859310
Yeah debug is set to true and customErrors mode = off.  Not sure why I'm not seeing an actual error.
0
 
LVL 1

Accepted Solution

by:
dotnetchick earned 500 total points
ID: 24874660
I believe in order for the report viewer control to function correctly, in the ReportServerUrl, you need to specify the path to the report server.  Then for ReportPath you need to give the directory structure and report name as the report it setup.
ReportViewer1.ServerReport.ReportServerUrl = New System.Uri("https://www.mysite.com/ReportServer/")

ReportViewer1.ServerReport.ReportPath = "Directory1/ReportName"

Open in new window

0
 

Author Comment

by:jay-are
ID: 24883438
I've got that exact setup now.  Ok so I had to go into the appsettings in IIS for that specific program and change it from version 3.5 back to "classic" or 2.0 to get the page to even load.  Now it loads fine but I don't get a reportviewer.  Just a blank iframe...
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
Occasionally there is a need to clean table columns, especially if you have inherited legacy data. There are obviously many ways to accomplish that, including elaborate UPDATE queries with anywhere from one to numerous REPLACE functions (even within…
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…
Internet Business Fax to Email Made Easy - With  eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, f…

912 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now