여기 읽었습니다 : 나는 비슷한 문제로 생각했던 데 Error 10048 when trying to open TcpChannelTcpChannel을 등록 문제
- 분명히 없습니다. 나는 윈속을 다시 처음 respondant의 조언을했다 어쨌든, 여기 내 채널 등록 비용 (윈속이 어쨌든, 손상받을 않습니다 어떻게?) :
channel = new TcpChannel(channelPort);
ChannelServices.RegisterChannel(channel, false);
와 클라이언트 전화 :
// Create a channel for communicating w/ the remote object
// Notice no port is specified on the client
TcpChannel channel = new TcpChannel();
ChannelServices.RegisterChannel(channel, false);
// Create an instance of the remote object
CommonDataObject obj = Activator.GetObject(typeof(CommonDataObject) ,
"tcp://localhost:49500/CommonDataObject") as CommonDataObject;
이 사용하기에 너무 번거 롭다. 그러나이 문제는 서버의 ChannelServices.RegisterChannel (...)에있는 것으로 보입니다. 이제 클라이언트 부분을 포함시킨 이유는 클라이언트 인스턴스가 서버 객체를 확인하기 때문입니다. 찾지 못하면 서버를 인스턴스로 '밀어 넣기'합니다. 내가 궁금한 것은 객체의 사용 가능한 첫 번째 (Activator.GetObject (...))를 확인하면이 TCP 채널이 이미 등록되었다고 생각하는 ChannelServices가 발생합니다. 그것은 바보라고 들리지만, 그것은 나의 유일한 가능한 설명입니다. 방화벽, 곰팡이 방지 앱을 사용 중지하고 재부팅했습니다. 여전히 수신이
나는 나의 스택 추적을 보았고, 통지 한 다음 RegisterChannelInternal (...)가 '이미 등록을 한'문제의 원인이 무엇있을 경우채널 'tcp'는 이미 입니다.
at System.Runtime.Remoting.Channels.ChannelServices.RegisterChannelInternal(IChannel chnl, Boolean ensureSecurity)
at System.Runtime.Remoting.Channels.ChannelServices.RegisterChannel(IChannel chnl, Boolean ensureSecurity)
내가 궁금. 그래서, 그 외에는 손실이 있습니다 ...
해당 채널을 확인하는 호출이 원인 일 수 있습니다. 그것이 합의라면 다음 질문으로 변경됩니다. 채널에 대해 설문 조사를하려면 어떻게해야합니까?
업데이트 : 클라이언트에서 서버의 초기 검사를 제거하고 서버를 인스턴스화해야한다고 가정하면 클라이언트 검사가 문제를 일으키는 것으로 나타났습니다. 나는 서버를 관리 할 수 있었고 클라이언트는 '투명한 프록시'객체를 얻었습니다. 그러나 문제는 여전히 남아 있습니다. "서버가 인스턴스화되었는지 검색하려면 어떻게합니까?"