为什么我的 MarshalByRefObject 对象没有命中我的断点?



我在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项目在调试模式下构建。

相关内容

  • 没有找到相关文章

最新更新