OVH Cloud OVH Cloud

Pb Request

1 réponse
Avatar
Thibault
Bonjour,

Un petit problème, je suis en train de créer un namespace pour ma boite et
j'ai une erreur du type :

La référence d'objet n'est pas définie à une instance d'un objet

Et je ne comprend pas pourquoi j'ai cette erreur

Voici mon code source :

Imports System

Imports System.Data

Imports System.Data.SqlClient

Imports System.Web

Imports System.Web.HttpRequest

Imports System.Web.HttpResponse

Imports System.Web.HttpCookieCollection



Namespace POSTUP.LOGISTICIEL

Public Class Session

'

'

'

Private m_SES_ID As Integer

Private m_CONNEXION_STRING As String

Private m_MODULE As String

Public gLogin As String 'Login de l'utilisateur

Public gEmail As String 'Email de l'utilisateur

Public gDroits As String 'Droits de l'utilisateur

Public gDroitAdmin As Boolean

Public gDroitModif As Boolean

Public gDroitConsult As Boolean

Public EstValide As Boolean

Public RaisonInvalide As String ' indique la raison si EstValide est faux



Public Property SES_ID()

Get

SES_ID = m_SES_ID

End Get

Set(ByVal Value)

m_SES_ID = Value

End Set

End Property

Public Property ConnexionString()

Get

If m_CONNEXION_STRING <> "" Then

ConnexionString = m_CONNEXION_STRING

Else

m_CONNEXION_STRING = ConfigurationSettings.AppSettings("CONNEXION_SESSION")

ConnexionString = m_CONNEXION_STRING

End If

End Get

Set(ByVal Value)

m_CONNEXION_STRING = Value

End Set

End Property

'Fonction de vérification de la session

Public Function fcVerifierSession(ByVal Operation As String, ByVal Droits As
String) As Boolean

'Déclaration de mes variables

Dim SQLSelect As String

Dim SES_IP As String

Dim myCookie As New HttpCookieCollection

Dim myRequest As HttpRequest

Dim myResponse As HttpResponse

'Récupération de l'adresse IP de l'utilisateur

SES_IP = myRequest.ServerVariables("REMOTE_ADDR") < ========== ligne de
l'erreur

'Test si le cookie PUPSessionID est vide

If myCookie.Item("PUPSessionID").Value = "" Then

'Initialisation de la requète de sélection

'servant à la récupération de l'identifiant

'en fonction de l'adresse IP courante

SQLSelect = "SELECT max(SES_ID) as SES_ID FROM SESSION_SES WHERE SES_IP = '"
& SES_IP & "' AND ETS_CODE = 'OK'"



Try

Dim mConn As New SqlConnection(ConnexionString) 'Initialisation de mon objet
SqlConnexion

mConn.Open() 'Ouverture de mon objet SqlConnection

Dim mCmd As New SqlCommand(SQLSelect, mConn) 'Initialisation de mon objet
SqlCommand

Dim mDr As SqlDataReader 'Initialisation de mon objet SqlDataReader

mDr = mCmd.ExecuteReader(CommandBehavior.SingleRow) 'Execution de ma requète

mDr.Read() 'Lecture de l'enregistrement suivant

If Not mDr.IsDBNull(0) Then 'test si le résultat de ma requète est null

m_SES_ID = DataBinder.Eval(mDr, "SES_ID") 'Affectation du résultat de la
requète à ma variable m_SES_ID

Else 'Si le résultat de ma requète est null

EstValide = False 'Initialisation de ma variable EstValide à False

RaisonInvalide = "Pas de session valide. Veuillez vous reconnecter."
'Définition du message d'erreur

fcVerifierSession = False 'Echec de la méthode fcverifierSession

Exit Function 'Sortie de la méthode

End If

mDr.Close() 'Fermeture de mon objet SqlDataReader

mConn.Close() 'Fermeture de mon objet SqlConnection

Catch ex As Exception 'Gestion des exceptions

EstValide = False 'Initialisation de ma variable EstValide à False

RaisonInvalide = "Pas de session valide. Veuillez vous reconnecter."
'Définition du message d'erreur

fcVerifierSession = False 'Echec de la méthode fcverifierSession

Exit Function 'Sortie de la méthode

End Try

Else 'Si mon cookie PUPSessionID n'est pas vide

m_SES_ID = myCookie.Item("PUPSessionID").Value 'Affectation de la valeur de
mon cookie à ma variable m_SES_ID

End If

Dim strCmdText As String = "sp_VerifierSession" 'Appel de la procédure
stockée de vérification sp_VerifierSession

Dim mConnSP As New SqlConnection(ConnexionString) 'Initialisation de mon
objet SqlConnection

Dim mCmdSP As New SqlCommand(strCmdText, mConnSP) 'Initialisation de mon
objet SqlCommand

mCmdSP.CommandType = CommandType.StoredProcedure 'Définition du type de mon
objet SqlCommand

Dim mParam As SqlParameter 'Initialisation de mon objet SqlParameter

mParam = mCmdSP.Parameters.Add("@SessionID", SqlDbType.Int,
ParameterDirection.Input, m_SES_ID) 'Ajout du parametre d'entrée @SessionID
représentant l'identifiant de session

mParam = mCmdSP.Parameters.Add("@IP", SqlDbType.VarChar,
ParameterDirection.Input, myRequest.ServerVariables("REMOTE_ADDR")) 'Ajout de
mon parametre d'entrée @IP représentant l'adresse IP courante de l'utilisateur

mParam = mCmdSP.Parameters.Add("@UrlPage", SqlDbType.VarChar,
ParameterDirection.Input, myRequest.ServerVariables("SCRIPT_NAME")) 'Ajout de
mon parametre d'entrée @UrlPage représentant l'url de la page courante

mParam = mCmdSP.Parameters.Add("@Droits", SqlDbType.VarChar,
ParameterDirection.Input, Droits) 'Ajout du parametre d'entrée @Droits
représentant le type de droits de l'utilisateur courant

mParam = mCmdSP.Parameters.Add("@Application", SqlDbType.VarChar,
ParameterDirection.Input, Operation) 'Ajout du parametre d'entrée
@Application représentant l'opération sur laquelle doit s'effectuer la
vérification

mParam = mCmdSP.Parameters.Add("@Origine", SqlDbType.VarChar,
ParameterDirection.Input, myRequest.ServerVariables("HTTP_REFERER")) 'Ajout
du parametre d'entrée @Origine représentant la provenance de l'utilisateur
courant

Dim mReader As SqlDataReader 'Initialisation de mon objet SqlDataReader

mReader = mCmdSP.ExecuteReader(CommandBehavior.SingleRow) 'Execution de la
procédure stockée

mReader.Read() 'Lecture de l'enregistrement suivant

If CStr(DataBinder.Eval(mReader, "Etat")) = 1 Then 'Test si ma procedure
stockée retourne une erreur via la variable Etat

EstValide = False 'Initialisation de ma variable EstValide à False

RaisonInvalide = CStr(DataBinder.Eval(mReader, "MsgErreur")) 'Définition du
message d'erreur

fcVerifierSession = False 'Echec de la méthode fcverifierSession

Exit Function 'Sortie de la méthode

Else 'Si tout s'est déroulé correctement

gLogin = CStr(DataBinder.Eval(mReader, "Login")) 'Récupération et
affectation du login de l'utilisateur à la variable gLogin

gEmail = CStr(DataBinder.Eval(mReader, "Email")) 'Récupération et
affectation de l'email de l'utilisateur à la variable gEmail

gDroits = CStr(DataBinder.Eval(mReader, "Droits")) 'Récupération et
affectation des droits de l'utilisateur à la variable gDroits

fcVerifierSession = True 'Reussite de la méthode fcVerifierSession

End If

mConnSP.Dispose() 'Fermeture et vidage de mon objet SqlConnection

End Function

'Fonction de vérification des droits pour le module menu

Public Function fcVerifierDroitsModuleMenu(ByVal ModuleMenu As String) As
Boolean

End Function

End Class

End Namespace



Merci pour votre aide

1 réponse

Avatar
Zazar
Bonjour,

Un petit problème, je suis en train de créer un namespace pour ma boite et



Attention : je ne sais pas si c'est clair pour vous mais un namespace et une
bibliothèques de classes sont deux concepts différents. "Créer un namespace
pour quelqu'un" ne veut rien dire.


j'ai une erreur du type :

La référence d'objet n'est pas définie à une instance d'un objet

Et je ne comprend pas pourquoi j'ai cette erreur

Voici mon code source :





-> Le nom de la classe est mal choisi : si j'ai bien compris cette classe
Session sera utilisée dans des applications web, et il y aura
vraisemblablement des conflits de nom

-> A première vue, ce code gère une session en stockant les informations
dans une base de données : ASP.NET sait faire ça, il n'y a qu'à modifier le
fichier web.config

-> vous déclarez un objet myRequest sans l'initialiser : vous ne pouvez donc
pas l'utiliser (au passage, le compilateur C# aurait signalé l'erreur à la
compilation). Pour l'initialiser, servez vous du membre static Current de la
class HttpContext (ou HttpContextUtily, enfin un nom qui ressemble à ça).

--

Zazar