리모컨 클라이언트 및 원격 클라이언트 역할을하는 특정 응용 프로그램 (Windows 서비스)을 원합니다. 프로덕션에서는 .NET Remoting을 통해 서로 모니터링하는 두 개의 응용 프로그램 인스턴스를 실행하고 이에 따라 실패를보고합니다.'tcp'채널이 이미 등록되었습니다.
나는 기본 조각을 썼고 "채널 'tcp'가 이미 등록되었습니다."예외적으로 채널 구성을 프로그래밍 방식으로 설정하고 싶습니다.
리모컨 클라이언트 및 원격 클라이언트 역할을하는 특정 응용 프로그램 (Windows 서비스)을 원합니다. 프로덕션에서는 .NET Remoting을 통해 서로 모니터링하는 두 개의 응용 프로그램 인스턴스를 실행하고 이에 따라 실패를보고합니다.'tcp'채널이 이미 등록되었습니다.
나는 기본 조각을 썼고 "채널 'tcp'가 이미 등록되었습니다."예외적으로 채널 구성을 프로그래밍 방식으로 설정하고 싶습니다.
특정 포트 번호가있는 채널은 하나의 응용 프로그램 인스턴스에서만 만들 수 있습니다. 각 인스턴스마다 다른 포트 번호와 채널 이름을 사용해야합니다.
이렇게하려면 별도의 채널 템플릿을 사용해야합니다 (템플릿을 사용하는 경우?).
AppDomain
에 한 번만 동일한 포트 번호로 같은 채널을 만들 수 있습니다. 그게 잘못된거야?
것 같다 ... 서비스 1가 "의 VitalSigns는"서버가 포트 9001에서 수신 대기하고 서비스 2 포트 9002에서 수신 대기 "의 VitalSigns"서버 서비스 1은 서비스 2의 생체 신호를 확인하고 서비스 2의 확인합니다을 가지고있다 Service1 하나의 인스턴스에서 서버를 실행하지 않고 다른 서버가 제대로 작동하는지 확인하지 않으면 각 서버/클라이언트가 필요합니다. –
채널 이름을 지정하지 않으면 코드는 기본적으로 "tcp"를 사용하며 모든 채널은 고유 한 이름을 가져야합니다. 이렇게 열면 각 채널에 대해 고유 한 이름을 지정하십시오.
int tcpPort = 52131;
// ------------------------------------------------------------
BinaryServerFormatterSinkProvider serverProv =
new BinaryServerFormatterSinkProvider();
serverProv.TypeFilterLevel = TypeFilterLevel.Full;
RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.Off;
serverProv.TypeFilterLevel = TypeFilterLevel.Full;
IDictionary propBag = new Hashtable();
// -----------------------------------------
bool isSecure = [true/false];
propBag["port"] = tcpPort ;
propBag["typeFilterLevel"] = TypeFilterLevel.Full;
propBag["name"] = "UniqueChannelName"; // here enter unique channel name
if (isSecure) // if you want remoting comm to be secure and encrypted
{
propBag["secure"] = isSecure;
propBag["impersonate"] = false; // change to true to do impersonation
}
// -----------------------------------------
tcpChan = new TcpChannel(
propBag, null, serverProv);
ChannelServices.RegisterChannel(tcpChan, isSecure);
// --------------------------------------------
string uRI = MyUniversalResourceIndicatorName;
// ---------------------------------------------
RemotingConfiguration.RegisterWellKnownServiceType(
typeof(ImportServiceManager), uRI ,
WellKnownObjectMode.SingleCall);
"int tcpPort = 82131;" WTF. 82131, 65535? – Behrooz
포트가 di fferent .. –
@Khurram Aziz - 각 인스턴스는 여러 포트를 열지 만 각 인스턴스는 여러 포트를 열지 만 다른 포트는 열지 않습니다. – stevehipwell
@Khurram Aziz - 두 채널 모두 다른 이름을 사용 했습니까? – stevehipwell