我在Windows 7上的IIS 7.0中工作。我有一个类派生自MarshallByRefObject。当我构造它的时候,它给了我应该的代理。我在问题对象上设置了断点。这个类是从IIS处理的GET请求中运行的另一个类调用的。调用者正在IIS工作进程(w3wp.exe)上运行,并且它的断点正在被击中(即我在[1]和[2]都有断点,但只有[1]的断点被击中)。
public class Caller
{
public void Process()
{
var callee = new Callee();
callee.Method(); // [1]
}
}
public class Callee : MarshallByRefObject
{
public void Method()
{
DoSomething(); // [2]
}
}
因为您的MBR上的方法不在同一进程中执行(我假设您不只是在单个进程中跨越AppDomains)。你只有对代理的引用,但方法体实际上并没有在调用者的AppDomain中执行。
如何引用Callee?我假设它们不在同一个项目中,所以检查一下:
- 两个项目都正确构建 在您的系统中只有一个Callee项目可执行文件的实例(dll或exe),包括GAC。你应该使用gautil来检查你的程序集是否在GAC中(谷歌一下)。
- Callee项目在调试模式下构建。