У меня есть класс на C# 2.0 с помощью следующего кода:AppDomain DoCallBack FileNotFoundException - C#
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
}
}
Этот класс содержится в рамках проекта Class Library, то ссылка из веб-приложения проекта.
Так, в моей веб-странице я просто экземпляр объекта, ожидая, что конструктор класса будет создавать эту новую AppDomain и выполнить указанные операции:
MyClass objMyClass = new MyClass("12022012213456");
Но я получаю эту ошибку:
Could not load file or assembly 'MyNamespace.MyClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
Но любопытно, что здесь в том, что это исключение происходит на этой линии:
_app.DoCallBack(new CrossAppDomainDelegate(CallBackMethod));
И как вы можете видеть, это происходит на MyClass, поэтому я не понимаю, как он мог сказать мне, что сборка не может быть найдена, если код уже выполняется ??? Я просто не понимаю.
BTW, я новичок в использовании AppDomain, может быть, я смущен некоторой концепцией.
Вы можете узнать свойства __app.BaseDirectory и _app.RelativeSearchPath сразу после строки _app = AppDomain.Create? Каждому домену приложения приходится решать свои собственные сборки. Подумайте об этом как о процессе внутри процесса. По какой-то причине новый домен приложения не может найти сборку, RelativeSearchPath и BaseDirectory могут дать некоторые подсказки. – Adam
@Добавьте следующие значения: RelativeSearchPath = null; BaseDirectory = "c: \ WINNT \ Microsoft.NET \ Framework \ v2.0.50727 \", они хороши? – lidermin