2009-03-22 7 views
0

Laissez-moi essayer de poser cette question sous un angle différent. J'ai remarqué qu'à chaque fois qu'une page aspx est rendue dans le navigateur en utilisant le modèle "site web", un assemblage aléatoire est créé "à la volée" dans les fichiers temporaires ASP.NET. L'analyse de l'assembly dans Reflector montre que la classe créée pour un fichier .aspx donné se trouve sous l'espace de noms "ASP". Donc, en commençant par un répertoire vide "Temporary ASP.NET Files", j'ai ouvert mon "site web" ASP.NET dans VS2008, et j'ai lancé la page par défaut. Immédiatement, j'ai observé qu'un répertoire aléatoire a été généré dans ce dossier. Travaillant mon chemin sur le chemin, j'ai trouvé 2 DLL créées: App_Code.1lywsqqz.dll, et App_Web_iohekame.dll. Je suppose que toutes les pages .aspx du site Web sont compilées dans App_Web dll et que tout le contenu du dossier App_Code est compilé dans App_Code.dll. Donc, si mes fichiers C#/VB.net App_Code sont sous l'espace de nommage "ASP", et que mes fichiers App_Web sont créés sous l'espace de noms "ASP", je reçois toujours une erreur "Impossible de charger le type 'ASP. NothwindDataContext?sites Web asp.net et espaces de noms par défaut et LINQ Datacontext partie 2

Quelqu'un a dit « vous n'avez pas besoin namespaces dans le dossier App_Code », mais je l'ai essayé sans et toujours obtenir « Impossible de charger le type « NorthwindDataContext » ».

Alors qu'est-ce qui se passe entre la Dossier App_Code, le reste du site et les espaces de noms?

EDIT: Voici ma LinqDataSource dans mon fichier .aspx fichier:

<asp:LinqDataSource ID="LinqDataSource1" runat="server" 
    ContextTypeName="NothwindDataContext" EnableUpdate="True" 
    TableName="Categories"> 
</asp:LinqDataSource> 

Ni "NorthwindDataContext", ni "ASP.NorthwindDataContext" fonctionne.

Répondre

4

Types dans App_Code Les fichiers source C#, comme n'importe quel fichier C#, ne seront pas placés dans un espace de nom spécifique à moins d'être explicitement déclarés par namespace Name {...}. Ainsi, une classe MyClass déclarée en App_Code aura le nom de type complet MyClass. Juste ça.

Vous pouvez faire référence dans Web.config comme: "MyClass, App_Code".

Side note: Lorsque vous utilisez un DBML dans App_Code, l'espace de noms de classes générées sont définies dans ce fichier (regardez la fenêtre des propriétés lorsque le fichier est ouvert DBML). Si vous spécifiez un espace de noms dans ce fichier, naturellement, vos classes seront définies dans cet espace de noms. Notez que cela ne contredit pas ce que j'ai dit plus haut. Le fait est que le générateur de contexte de données LINQ traite le fichier et définit les classes dans l'espace de noms spécifique.

+0

Alors, êtes-vous supposé avoir une entrée dans Web.config pour CHAQUE classe dans App_Code? Pouvez-vous me donner un exemple complet d'exemple web.config? Merci. – Robert4Real

+0

Non! Pas du tout. Je viens de le dire * au cas où vous en auriez besoin *. –

+0

De plus, ai-je besoin d'une instruction "#imports ...." dans mon fichier .aspx? – Robert4Real

Questions connexes