1

我有一个 .Net Remoting 可以在控制台应用程序中工作,但不能在 Window 服务中工作。它返回我空类型。我不知道这里有什么问题

static void TicketServer()
{
    System.Diagnostics.Debugger.Break();
    //Console.WriteLine("Ticket Server started...");

    TcpChannel tcpChannel = new TcpChannel(9988);
    ChannelServices.RegisterChannel(tcpChannel, true);

    Type commonInterfaceType = Type.GetType("WindowsService.MovieTicket");

    RemotingConfiguration.RegisterWellKnownServiceType(commonInterfaceType,
    "MovieTicketBooking", WellKnownObjectMode.SingleCall);
}

我在 Windows 服务中得到“commonInterfaceType”空值,而在控制台应用程序中工作正常。当我将应用程序从控制台转移到 Windows 服务时,我还更改了命名空间

我找到了问题,但需要知道为什么会在 Windows 服务中发生这种情况,例如在图像中突出显示的行在控制台应用程序中工作正常,但在 Windows 服务中返回 null。

http://desmond.imageshack.us/Himg339/scaled.php?server=339&filename=testimg.png&res=landing

如果我没记错的话,我认为这是微软的错误......谢谢

4

1 回答 1

0

在 ofTicketServer() 方法的主体之外设置 tcpChannel 变量。正在发生的事情是在方法返回后通道正在被释放。在控制台应用程序中,我们使用 Console 类的 ReadLine() 方法暂停该方法,该方法允许通道继续侦听并且在按下键之前不会被释放,但这与 Windows 服务不同。

于 2017-05-12T16:26:08.507 回答