ReportViewer.ReportSource e SerializationException

mercoledì 01 agosto 2007 - 12.46

volperubbia Profilo | Senior Member

Ciao a tutti,
nella mia applicazione asp.net, sto rivedendo la form authenticazion, nel senso che mi sono definito un MioPrincipal e un MioIdentity ...

Public Class MioIdentity : Implements System.Security.Principal.IIdentity
........
End Class

Public Class MioPrincipal : Implements System.Security.Principal.IPrincipal
........
End Class

Fin qui tutto o k.
Ma quando vado in una pagina, dov'è contenuto il report viewer, a visualizzare un report, e faccio la seguente assegnazione ...

objReportViewer.ReportSource = report

ottengo il seguente errore:

Exception: System.Runtime.Serialization.SerializationException
Message: Il tipo .... MioPrincipal nell'assembly ...MioAssembly, Version=1.0.2769.15936, Culture=neutral, PublicKeyToken=null non è contrassegnato come serializzabile.
Source: CrystalDecisions.Web
at CrystalDecisions.Web.ReportAgent.h()
at CrystalDecisions.Web.ReportAgentBase.set_ReportSource(Object value)
at CrystalDecisions.Web.ReportAgent.set_ReportSource(Object value)
at CrystalDecisions.Web.CrystalReportViewerBase.set_ReportSource(Object value)
at FidWeb.WebFrmViewer.Page_PreRender(Object sender, EventArgs e)

A cosa può essere dovuto?
In MioPrincipal e un MioIdentity ... devo implementare altro?

Questo errore non avviene se uso il GenericPrincipal ...

Davide

freeteo Profilo | Guru

ciao,
non ho capito bene, ma poi quando implementi l'interfaccia sulla tua classe, la passi in qualche modo al report?
ciao.

Matteo Raumer
[MCAD .net]
http://blogs.dotnethell.it/freeteo

volperubbia Profilo | Senior Member

Hai ragione ... a volte mi spiego male ...

> ciao,
> non ho capito bene, ma poi quando implementi l'interfaccia sulla tua classe,
> la passi in qualche modo al report?

No al report non passo nulla ... ho semplicemente implementato queste due classi:

Public Class MioIdentity : Implements System.Security.Principal.IIdentity
Private _i32UserID As Int32 = -1
Private _strName As String = String.Empty
Private _i32SedeLavoroID As Int32 = -1
Public Sub New(ByVal _userName As String, ByVal _userData As String)
Dim aData As String() = _userData.Split(...)
_strName = _userName
_i32UserID = Int32.Parse(aData(0))
_i32SedeLavoroID = Int32.Parse(aData(1))
End Sub
Public ReadOnly Property AuthenticationType() As String Implements System.Security.Principal.IIdentity.AuthenticationType
Get
Return "MioAuthCookie"
End Get
End Property
Public ReadOnly Property IsAuthenticated() As Boolean Implements System.Security.Principal.IIdentity.IsAuthenticated
Get
Return True
End Get
End Property
Public ReadOnly Property UserID() As Int32
Get
Return _i32UserID
End Get
End Property
Public ReadOnly Property IDSedeLavoro() As Int32
Get
Return _i32SedeLavoroID
End Get
End Property
Public ReadOnly Property Name() As String Implements System.Security.Principal.IIdentity.Name
Get
Return _strName
End Get
End Property
End Class

Public Class MioPrincipal : Implements System.Security.Principal.IPrincipal
Private objIdentity As MioIdentity
Public Sub New(ByVal _identity As MioIdentity)
objIdentity = _identity
End Sub
Public Function IsInRole(ByVal role As String) As Boolean Implements System.Security.Principal.IPrincipal.IsInRole
Return True
End Function
Public ReadOnly Property Identity() As System.Security.Principal.IIdentity Implements System.Security.Principal.IPrincipal.Identity
Get
Return objIdentity
End Get
End Property
End Class

Comunque con ... GenericPrincipal ... funziona tutto, evidentemente mi son perso qualcosa nell'implementazione di queste due casi.

La cosa strana è che, se eporto il report in pdf quindi senza il viewer, non mi da problemi, neanche con MioPrincipal e MioIdentity ...

Chissa, se risolvo ... ti faccio sapere.

Davide
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5