IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Nouvelle classe, pas reconnue? (question bête)


Sujet :

ASP.NET

  1. #1
    Membre éclairé Avatar de MicaelFelix
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Par défaut Nouvelle classe, pas reconnue? (question bête)
    Bonjour,

    J'ai un site ASP.NET mais pour le moment je n'ai pas utilisé la programmation objet personnalisée (en créant des classes manuellement) à l'intérieur de ce site.
    Mais voilà... j'en ai assez d'utiliser des INCLUDE FILE pour régler mes problèmes qui seraient facilement réglés en programmation objet.

    Bref je me suis fait ma classe objet en VB sur Visual web developper express edition, j'ai mis cette classe dans App_Code comme suggéré par le logiciel, ensuite je me suis créé une page toute bête, où il y a :

    Line 13: Response.Write("test debut OK")
    Line 14: Dim truc As Connexion = New Connexion("rien")

    (Si vous voulez voir le code complet je le met ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <%@ Page Language="VB" Debug="True" ContentType="text/html" ResponseEncoding="utf-8" %>
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
    <body>
    <p>
    <% 
        Response.Write("test debut OK")
        Dim truc As Connexion = New Connexion("rien")
        truc.Fin()
        Response.Write("test fin OK")
    %></p>
     
    </body>
    </html>

    Je travaille en local mais je ne teste pas en local, donc j'ai mis le dossier App_Code sur le serveur et mon fichier test.aspx

    Et il me sort:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Compiler Error Message: BC30002: Type 'Connexion' is not defined.
    Alors j'ai testé avec un Import namespace de la classe connexion, mais ça ne fonctionne pas plus car il dit ne pas trouver ce namespace, de plus j'ai cherché sur le web et j'ai vu qu'apparemment quand c'est sous App_Code y'a pas besoin de mettre d'Import.

    Je pense que mon problème vient d'une DLL/Assembly manquant, car je n'ai aucune DLL sur mon site (je ne sais pas comment la créer! et Visual Web Dev semble ne pas vouloir me la faire) ?

    Ou bien est-ce parce que j'ai la version framework 1.1 sur mon serveur alors que je me sert de la version la plus récente fournie avec Visual Web Developper sur mon ordinateur?

    Quelqu'un pourrait m'éclairer sur ce point? Car je n'ai jamais utilisé de DLL dans un site, ni utilisé ASP.NET avec des classes créées manuellement.

    Le pire dans tous ça c'est que j'ai testé la page de test et la classe séparément sur mon poste, et il n'y a pas eu une erreur (connexion à la BD réussie, déconnexion aussi).

    (C'est bien plus simple en php Mais j'ai pas le choix )

    Merci d'avance.

  2. #2
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Bon, permettons nous un peu d'humour un dimanche amtin, 1 demie heure aprés le réveil : le PHP, c'est mal.....

    Plus sérieusement, le jour ou PHP fera la moitié de .NET ou de JAVA, l'apocalyspe ne sera pas loin.

    Et maintenant répondons à ton message.

    D'abords tu utilises beaucoup trop de commande de l'ASP 3.0 dans une page .NET. Ensuite, je pense que tu ne prends pas la chose dans le bon sens.
    Si Truc est une connection à la base de données, tu dois avoir la chaine complète dans ta classe. Le mot "Connexion" est un mot connu dans la classe System.Data (si mes souvenirs sont bons). Donc, il faut que tu fasse attention lors des nomages de tes fonctions.

    Ensuite il est grandement préférable d'avoir ls même version de FrameWork sur ta machine et sur le serveur.
    Et puis, sauf à vérifier que je dise une anerie, le placement d'une classe externe dans leapp_Code est valable avec VS2005, donc avec le FrameWork 2.0. si ton serveur na que le 1.1, je pense qu'il ne va pas le comprendre.

    Pour les Imports, perso, je les fait tujours, parce que le truc qui fait que ça marche tout seul en mettant la classe dans le App_Code, j'ai jamais réussi à le mettre en place. une ligne d'Imports ne mange pas de pain.

    Il faudrait aussi que nous donne le code de ta classe externe, l'erreur vient peut être e là.

    Et ausis, plus généralement, le Web.config est vachement mieux pour gérer la connection à la BDD. Est tu sûr que ton serveur puisse atteindre ta source de données ?

    Bon, conclusion, je ne t'apporte pas de solution, mais plus de question qu'autre chose, il faut dire aussi que ta question est super vague.

    On pourra en reparler demain, si tu apportes des réponses, ce midi je pars à la plage faire un pic nic en famille et me mettre enfin le cul à l'eau, merci le beau mois de Juillet.

    Kenavo

  3. #3
    Membre éclairé Avatar de MicaelFelix
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Par défaut
    Merci pour ta réponse!

    Oui je pensais effectivement que ça pouvait venir du App_Code qui est peut être valable pour .net 2 et pas .net 1.1
    Cependant je ne comprends pas:
    D'abords tu utilises beaucoup trop de commande de l'ASP 3.0 dans une page .NET!
    Pourtant dans ma page mis à par Response.Write et la création d'un objet, qui était déjà possible sous 1.1 ? Non?

    Le mot "Connexion" est un mot connu dans la classe System.Data (si mes souvenirs sont bons). Donc, il faut que tu fasse attention lors des nomages de tes fonctions.
    Non je ne pense pas, c'est connection qui peut être reconnu car connection n'est pas Français, c'est pour ça que j'utilise Connexion vu que les anglais n'utilisent pas ce terme (à moins que je ne me trompe).

    le Web.config est vachement mieux pour gérer la connection à la BDD
    Ah? Ça m'intéresserait peut être ça! Quoique j'ai plusieurs BD dont une que je ne veux pas avoir toujours de connectée alors je ne sais pas si ça peut être géré avec Web.Config

    Est tu sûr que ton serveur puisse atteindre ta source de données ?
    Sûr et certain, car il le fait déjà (j'ai toujours mon site actuel qui est en fonction).

    Plus sérieusement, le jour ou PHP fera la moitié de .NET ou de JAVA, l'apocalyspe ne sera pas loin.
    Moi je cracherai pas sur PHP car ça reste un language simple, et tous les hébergements les moins chers tournent sous PHP


    Je vais donc placer ma classe hors du App_Code et essayer de faire fonctionner ça.
    Au fait comme je l'ai précisé, la classe fonctionne quand on fait tourner ça en local, la connexion se fait à la BD réelle sans erreur (je travaille avec VPN).

  4. #4
    Membre expérimenté
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Par défaut
    Bon, alors un peu dans le désordre :
    Pour la chaine de connection dans le Web.config, tu peux faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <configuration>
    <connectionStrings>
    <add name="DataCon" connectionString="Data Source=nom_serveur;Initial Catalog=nom_base;User ID=nom_user; pwd=mot_de_passe;" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    </configuration>
    c'est une chaine de connection pour un SQL Server 2000. Tu peux en créer autant que tu veux, il te suffit de changer le name.
    Ensuite pour l'utiliser tu dois passer par un objet du FrameWork, un pue dans ce genre là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.ConfigurationManager.ConnectionStrings(idChainCon).ConnectionString
    Et tu passe ce truc en paramtre de l'objet qui te demande une chaine de connection. ensuite tu peux faire, dans une classe externe, un petit fonction qui te rammène ça direct avec une gestion des erreurs.

    Sur le fait d'utiliser des comamnde de l'ancien système, certes ça reste tout à fait valable, mais il faut bien comprendre la logique et la philosophie .NET.
    Quand tu a envie de faire un Response.Write, tu transforme ça en <asp:label> et tu envoi un chaine dans la propriété Text, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    monLabel.Texte = MaChaine
    Ensuite, gère tes pages en mettant bien ton code dans la page de CodeBehind et pas tout dans la même page. C'est plus propre et tu t'y retrouvera mieux.

    Sur le nommage, mon exemple n'est pas trés probant, mais globalement, fait attention au nommage.

    Ta classe externe doit obligatoirement se trouver dans App_Code, sinon, ça marche pas, du moins avec le FrameWork 2.0.
    Mais il faut tout même lui faire un petit imports pour qu'elle soit correctement appelée.

    Maintenant, deux choses :
    - je suis ennuyé car tout ce que je te dit là, tu aurais pu le trouver dans un tuto de base
    - il faut que tu donne le code de ta classe externe et le message d'erreur exact qu'il te remonte.

    Donc, essaie de refaire ta classe et ta page selon ces indication et dis nous si ça marche toujours pas, on essaiera de trouver pourquoi.

    Kenavo

  5. #5
    Membre éclairé Avatar de MicaelFelix
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Par défaut
    Salut,

    En fait si je me souviens bien j'ai réussi à faire tourner le code sur ma machine : instanciation de l'objet & connexion à la BD effectuée, puis déconnexion, sans message d'erreur.
    En local je tournais sous le framework 2.
    Lorsque j'ai mis ça sur le serveur (qui est sous la version 1.1), j'avais eu l'erreur que j'ai mis dans le premier message, comme quoi soit l' "Imports" ne trouve pas la classe, soit l'objet n'a pas de classe correspondante lorsque je ne met pas d'imports.

    Bref il s'agit à mon avis d'un problème entre les deux versions.
    J'avais changé les paramètres de IIS pour mettre le site en framework 2, mais cela a résulter à des pages blanches (oui oui, blanches, et ça m'a même fait peur car je pensais que mon site avait disparu). Bref je ne sais pas pourquoi je ne peux pas passer directement en framework 2, je vais demander à mon cher administrateur système
    Et je reviendrais ici pour dire si cela fonctionne ou non après passage vers le framework 2.

    Quand tu a envie de faire un Response.Write, tu transforme ça en <asp:label> et tu envoi un chaine dans la propriété Text, genre
    Ok je comprends, page aspx vitrine et le code behind pour nourrir cette page.

    Merci

Discussions similaires

  1. question bête : du pas à pas avec php
    Par amnay dans le forum Langage
    Réponses: 10
    Dernier message: 22/10/2008, 16h53
  2. Réponses: 13
    Dernier message: 05/05/2008, 13h45
  3. Réponses: 8
    Dernier message: 04/08/2004, 14h17
  4. Numéro auto ===== Question bête
    Par Nicos77 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/06/2003, 13h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo