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

时间:2011-11-09 20:11:39

标签: c# debugging iis .net-remoting

我在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]
    }
}

2 个答案:

答案 0 :(得分:2)

因为MBR上的方法不会在同一个进程中执行(我假设你不只是在一个进程中跨越AppDomains)。您只能引用代理,但方法体实际上并未在调用者AppDomain中执行。

检查您是否已附加到可能存在的服务流程。

答案 1 :(得分:0)

你如何引用被叫者?我假设他们不在同一个项目中,所以请检查:

  • 两个项目都已正确构建
  • 您的系统上只有一个Callee项目可执行文件(dll或exe)的实例,包括GAC。您应该使用GacUtil检查您的程序集是否在GAC中(谷歌关于它)。
  • Callee项目以调试模式构建。