2013-04-10 122 views

回答

1

如果你註冊你的公知類型的辛格爾頓,你可以使用:

RemotingServices.Disconnect(foo); 

但首先你必須創建對象,然後元帥它,而不是使用RegisterWellKnownServiceType:

Foo foo = new Foo(); 
RemotingServices.Marshal(foo, uri); 

如果您將您熟知的類型註冊爲SingleCall,則無法完成此操作。

+0

hmm。 RemotingConfiguration.RegisterWellKnownServiceType()和RemotingServices.Marshal()有什麼區別嗎?爲什麼RemotingConfiguration.RegisterWellKnownServiceType()在RemotingServices.Marshal可以執行相同的+斷開連接時存在? – marc40000 2013-04-15 09:16:55

+0

@ marc40000使用RegisterWellKnownServiceType對象將不會被創建,直到客戶端首先詢問它時,纔會將其留給.NET框架來完成工作。元帥基本上給你更多的控制,並允許你註冊一個現有的遠程實例,然後在需要時斷開連接。 – 2013-04-15 20:37:27

+0

我在我的項目中切換到RemotingServices.Marshal()。現在我遇到了以下問題:當服務器運行一段時間而沒有任何連接,然後客戶端嘗試連接時,它表示服務器不再託管所請求的服務。在服務器啓動後立即連接客戶端時,它可以正常工作。不知何故,在一段時間後自動移除Mashaled服務? – marc40000 2013-04-23 13:03:26