2010-04-18 39 views
0

我使用Web服務中的Assembly.LoadFrom從Web站點加載程序集。但問題是它是在virutal目錄中,server.mappath像\ share \ mydll.dll那樣解析url,並且loadform方法失敗。無論如何,從遠程位置引用dll?使用反射從webservice加載遠程程序集

我已經試過路過的URL(http://localhost/downloadable/mydll.dll),並再次從HRESULT得到 「無法加載文件或程序集http://localhost/downloadable/mydll.dll'或其依賴項之一。HTTP組件的下載已針對此應用程序域禁用。(例外:0x80131048)」

+0

[!網址,不要使用反斜槓(http://www.xkcd.com/727/) – SLaks 2010-04-18 15:35:04

+0

裝配在磁盤上還是從Web服務返回? – SLaks 2010-04-18 15:36:07

+0

對不起..我juz構成的網址。我的錯。程序集在磁盤上,並嘗試從web服務調用它。 – 2010-04-18 15:42:06

回答

1

可以使用WebClient類在互聯網上下載的組件:

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

只要您驗證您的Web服務器允許下載.dll文件,默認情況下IIS將阻止此操作(這是ClickOnce中存在.deploy選項的原因)。 – 2010-04-18 17:22:49

+0

我確實設法使用webclient.downloaddata獲取DLL,但問題再次出現在我投射該對象時,它說「無法投射類型爲'SiteExtractor'的對象來鍵入'IExtractor'。」但是SiteExtractor實現了界面Iextractor,並且它以前完美地工作。 – 2010-04-20 02:09:43

+0

您可能在同一程序集的不同版本之間存在衝突。 – SLaks 2010-04-20 02:26:11

相關問題