【问题标题】:AppDomain DoCallBack FileNotFoundException - C#AppDomain DoCallBack FileNotFoundException - C#
【发布时间】:2016-04-16 11:47:25
【问题描述】:

我有一个带有以下代码的 C# 2.0 类:

public class MyClass : MarshalByRefObject, IDisposable 
    {
        private string _appName;
        private AppDomain _app;

        public MyClass(string appName)
        {
            _appName = appName;
            _app = AppDomain.CreateDomain("NewDomain" + _appName);
            _app.DoCallBack(new CrossAppDomainDelegate(CallBackMethod));
        }

        public void Dispose()
        {
            AppDomain.Unload(_app);
        }

        public static void CallBackMethod()
        {
            //some operations
        }
    }

此类包含在类库项目下,然后从 Web 应用程序项目中引用。

所以,在我的网页中,我只是实例化了该对象,期望类的构造函数会创建新的 AppDomain 并执行指定的操作:

MyClass objMyClass = new MyClass("12022012213456");

但我不断收到此错误:

无法加载文件或程序集“MyNamespace.MyClass,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。

但这里奇怪的是,这个异常发生在这一行:

_app.DoCallBack(new CrossAppDomainDelegate(CallBackMethod));

如您所见,它发生在 MyClass 上,所以我不明白如果代码已经在执行,它怎么会告诉我找不到程序集?我只是不明白。

顺便说一句,我是使用 AppDomain 的新手,也许我对某些概念感到困惑。

【问题讨论】:

  • 你能在 _app = AppDomain.Create 行之后找出 __app.BaseDirectory 和 _app.RelativeSearchPath 属性吗?每个应用程序域都必须解析自己的程序集。将其视为流程中的流程。由于某种原因,新的应用程序域找不到程序集,RelativeSearchPath 和 BaseDirectory 可能会提供一些线索。
  • @Adam 的值为:RelativeSearchPath = null; BaseDirectory = "c:\WINNT\Microsoft.NET\Framework\v2.0.50727\",它们好吗?

标签: c# appdomain


【解决方案1】:

您创建的 AppDomain (_app) 似乎无法在其程序集中定位您的 MyClass 类。您的CreateDomain 没有提供任何AppDomainSetup 信息,因此它没有当前应用程序域目录或程序集的上下文。您有两个选择,提供正确配置的 AppDomainSetup 或在您的 DoCallBack 方法之前调用 _app.Load(Assembly.GetExecutingAssembly.FullName)

【讨论】:

    【解决方案2】:

    我遇到了这个问题,但解决方案不同。在我的情况下,我需要显式提供我自己的 AppDomainSetup 对象并指定 ApplicationBase 文件夹,以便它可以真正找到我的程序集。

    我的代码已被另一个应用程序加载,这就是使用默认设置无法找到我的程序集的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-22
      • 1970-01-01
      • 2019-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-06-11
      • 2013-05-11
      • 1970-01-01
      相关资源
      最近更新 更多