2010-04-18 6 views
0

J'utilise Assembly.LoadFrom dans un service Web pour charger des assemblys à partir d'un site Web. mais le problème est qu'il est dans le répertoire virutal et le server.mappath analyse l'URL comme \ share \ mydll.dll et la méthode loadform a échoué. Existe-t-il une référence à dll à partir de l'emplacement distant?Chargement de l'assemblage à distance à partir du WebService avec réflexion

J'ai essayé passer l'url (http://localhost/downloadable/mydll.dll) et encore, il a obtenu « Impossible de charger le fichier ou l'assembly « http://localhost/downloadable/mydll.dll » ou une de ses dépendances. HTTP téléchargement des assemblages a été désactivé pour cette appdomain. (Exception de HRESULT : 0x80131048) »

+0

[! URL ne sont pas la barre oblique inverse] (http://www.xkcd.com/727/) – SLaks

+0

L'assemblage se trouve-t-il sur votre disque ou est-il renvoyé par un service Web? – SLaks

+0

désolé..i juz fait l'url. ma faute. l'assemblage est sur le disque et a essayé de l'appeler à partir du webservice. –

Répondre

1

Vous pouvez utiliser la classe WebClient pour télécharger un ensemble sur Internet:

using(var wc = new WebClient()) { 
    Assembly.Load(wc.DownloadData(url)); 
+0

tant que vous vérifiez que votre serveur Web autorise le téléchargement de fichiers .dll, par défaut IIS bloque cela (c'est pourquoi il existe l'option .deploy dans ClickOnce). –

+0

J'ai réussi à obtenir la DLL avec webclient.downloaddata mais le problème est de nouveau lorsque je lance cet objet, il est dit "Impossible de lancer l'objet de type 'SiteExtractor' pour taper 'IExtractor'." mais SiteExtractor implémente l'interface Iextractor et il fonctionnait parfaitement avant. –

+0

Vous avez probablement un conflit entre différentes versions du même assembly. – SLaks