如何在WebService中动态加/卸载DLL

cds27 2010-08-17 07:01:02
我想在WCF中,动态加载、卸载DLL,于是我采用了新建应用程序域的方法。一直存在问题,大家帮忙看看。
但是在都是报错,提示未能加载文件或程序集“TestLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。”
wcf调用时,执行的代码如下

AppDomain ad = AppDomain.CreateDomain(wsName);
dllPath = @"D:\TestLib.dll";
Assembly asm = ad.Load(LoadFromDll(dllPath));

LoadFromDll(dllPath),我有跟踪过,是有返回字节流的。

而我把同样的代码放到winform项目下执行,却可以正常载入。

private void Form1_Load(object sender, EventArgs e)
{
AppDomain ad = AppDomain.CreateDomain("TestLib");
Assembly ass1 = ad.Load(LoadFromDll("TestLib.dll"));
}

private byte[] LoadFromDll(string path)
{
byte[] result;

FileStream fs = new FileStream(path, FileMode.Open);
result = new byte[fs.Length];
fs.Read(result, 0, result.Length);
fs.Close();

return result;
}


实在不明白问题在哪,请大家帮帮忙!
...全文
154 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingmax54212008 2010-08-28
  • 打赏
  • 举报
回复
权限问题

修改ASPNET的权限,以及修改应用程序池从NETWORK SERVICE到本地系统

  • 打赏
  • 举报
回复
把Winform项目“引用”中的DLL都加入到WCF项目中,再试试
cds27 2010-08-22
  • 打赏
  • 举报
回复
顶起来
cds27 2010-08-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 findcaiyzh 的回复:]
看看下面的文章。

http://stackoverflow.com/questions/658498/how-to-load-assembly-to-appdomain-with-all-references-recursively

是不是TestLib依赖的某个assembly没有被载入。
[/Quote]
跟我想的一样,我也认为是缺少依赖。但是不知道该加入什么依赖。因为这个TestLib其实只有一个GetX(){return 10;}的函数。
AssemblyResolve在WCF的服务里是不能用的,会提示程序集“XXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”中的类型“XXX”未标记为可序列化
如果我加入了Serializable属性标记,则会提示未解析成员“XXX,XXX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”的类型。
另外,奇怪的,相同的程序,为什么在winform里面则可以运行,而不需要添加什么依赖呢?
downmoon 2010-08-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 findcaiyzh 的回复:]
是不是TestLib依赖的某个assembly没有被载入。
[/Quote]

         

topxiaonan 2010-08-18
  • 打赏
  • 举报
回复
试了下 不行啊?!
宝_爸 2010-08-18
  • 打赏
  • 举报
回复
看看下面的文章。

http://stackoverflow.com/questions/658498/how-to-load-assembly-to-appdomain-with-all-references-recursively

是不是TestLib依赖的某个assembly没有被载入。
cds27 2010-08-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 findcaiyzh 的回复:]
权限问题?

给下列账号对D:\的访问权限
ASPNET(XP)
NETWORK SERVICE(WIN2003)
[/Quote]

应该不是权限问题。
其一,LoadFromDll(dllPath),我有跟踪过,是有返回数据的。
其二,我是在VS下调试的,还未发布到服务器上。
宝_爸 2010-08-17
  • 打赏
  • 举报
回复
权限问题?

给下列账号对D:\的访问权限
ASPNET(XP)
NETWORK SERVICE(WIN2003)

12,162

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧