2009-08-19 4 views
2

Ok, j'ai créé un assemblage .net et cela fonctionne très bien sur mon site asp.net. Je veux maintenant l'héberger en tant que COM, donc je peux l'utiliser sur un ancien site web ASP. Cela fonctionne un peu, sauf qu'il ne lira pas les appsettings du fichier de configuration.D'où mon assembly .net lit-il sa configuration depuis lorsqu'il est hébergé en tant que COM?

Je pense qu'il devrait le lire dans le même dossier où j'ai enregistré mon assembly avec regasm et où réside le fichier .dll. J'ai essayé de copier le fichier de configuration à deux fichiers supplémentaires (dans le cas où il a lu un fichier nommé différent de "assembly-file-name" +. Config Les deux fichiers sont app.config et application.config - il ne semble pas lire l'un d'eux.

Où mon ensemble .net lire sa configuration à partir de quand hébergé comme COM?

+0

hôte est comme COM comme dans COM + (Services de composants)? –

+0

Misspeling: "Hôte COM comme COM" COM + COM (Component Services)? –

+0

Je ne comprends pas Alfred? J'ai juste besoin d'être capable d'y accéder depuis ASP avec le Server.CreateObject - il réside sur le même serveur que le site ASP hérité, donc il ne doit pas être COM + - même si je suppose que c'est le nom de tous les objets COM - même si elles ne sont pas distribuées .. –

Répondre

1

Si par COM vous voulez dire une application COM, alors vous devriez mettre votre configuration dans un fichier nommé d'après le fichier EXE. YourApp.Exe -> YourApp.exe.config

Si par COM vous dire COM +, alors jetez un oeil à http://blogs.msdn.com/heikkiri/archive/2005/11/10/491568.aspx

+0

Je pense que vous avez besoin de crédit pour cela - je l'ai trouvé quelque part, il pourrait aussi bien avoir été votre site - de toute façon, il explique parfaitement :) –

0

Sombody me corriger si je me trompe, mais je ne pense pas qu'une DLL lit un fichier de configuration Même si vous pouvez créer un fichier de configuration pour les projets DLL (en utilisant les propriétés du projet), je ne pense pas que vous êtes supposé configurer une DLL comme celle-ci et je ne pense pas que le framework supporte

Il y a deux façons maintenant:

  1. demandez à la personne de passer des valeurs de paramètres respectifs aux objets en tant que paramètres
  2. construire une méthode qui lit les paramètres lui-même et appeler la méthode après la création de l'objet.

EDIT
Pour vérifier, vous devez nommer le fichier de configuration application-name.config.xml, comme pour une application WebForms. Mais comme je l'ai dit, je doute que ça va marcher ...

+0

Dog nammit, j'espère que vous avez tort;) –

+0

Je connais ce qui suit: Lors de la création de DLL .NET qui contiennent des ensembles de données typés, les chaînes de connexion seront stockées dans les DLL app.config. Vous pouvez ensuite les copier à partir des DLL app.config dans app.config de l'application et ils seront utilisés, aussi longtemps que vous copiez également les informations d'espace de noms, etc. Mais cela ne fonctionnera pas pour une application ASP héritée je suppose .. –

+0

Le Framework le supporte. Au moment de l'exécution, la DLL recherche sa configuration dans le fichier de configuration EXE. –

0

Ok, j'ai trouvé une solution qui me rend heureux. J'ai fini par héberger l'objet COM dans les services de composants. Sur le paquet, j'ai choisi Propriétés et sélectionné l'onglet Activation, là je suis entré l'emplacement de mon fichier de configuration dans "Application Root Directory". Maintenant, pour le faire fonctionner, je devais renommer mon fichier de configuration à application.config et en quelque sorte j'ai eu aussi de créer un nouveau fichier au même endroit appelé application.manifest avec les données suivantes:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 
</assembly> 

Ce en fait résoud le problème d'avoir "la DLL" lire le fichier de configuration - en fait, puisque les services de composants est l'hôte (à la place de l'exe/site web), il détermine l'emplacement/config. Woop - et merci pour les gars d'entrée - je n'avais pas pensé au problème mentionné auparavant Thorsten.

Questions connexes