들어오는 메시지/연결을 받아들이는 WCF 서비스를 설정하려고합니다.로컬 연결 만 허용하도록 WCF NetTcpBinding을 설정하면 오류가 발생합니다.
은 내가 성공적으로 서비스를 생성하고 실행하고 WCF 끝점을 만들려면이 코드를 사용하여 통신 할 수 있었다 마자이 줄을 추가로
NetTcpBinding binding = new NetTcpBinding();
binding.Security.Mode = SecurityMode.None;
_host = new ServiceHost(this, new Uri("net.tcp://localhost:19852"));
_host.Description.Behaviors.Add(new ServiceMetadataBehavior());
_host.AddServiceEndpoint(typeof(ISyncClient), binding, "SyncService");
_host.AddServiceEndpoint(typeof(IMetadataExchange), System.ServiceModel.Description.MetadataExchangeBindings.CreateMexTcpBinding(), "mex");
_host.Open();
를 (단지 localhost로 제한되지 않음) 이미 있습니다 :
이 System.ServiceModel.AddressAlreadyInUseException
binding.HostNameComparisonMode = HostNameComparisonMode.Exact;
나는이 예외가 로컬 호스트에서 연결에 제한 IP 끝점 0.0.0.0:19852에있는 수신기. 이는 이미이 엔드 포인트에서 청취중인 다른 어플리케이션이 있거나 동일한 IP 엔드 포인트를 갖고 있지만 호환되지 않는 바인딩 구성을 사용하여 서비스 호스트에 여러 개의 서비스 엔드 포인트가있는 경우 발생할 수 있습니다. ---> System.Net.Sockets.SocketException : 각 소켓 주소 (프로토콜/네트워크 주소/포트)의 한 가지 용도 만 정상적으로 허용됩니다.
제한적인 올바른 방법은 무엇인지 잘 모르겠습니다. WCF 액세스하지만 분명히 작동하지 않습니다. 나에게 이것은 MEX 종점과의 일종의 갈등처럼 보인다. 내가 아는 한 mex 엔드 포인트가 필요하므로 제거 할 수 없습니다. 누구든지 해결책의 방향으로 나를 가리 킵니까?
"수신 메시지/연결 만 허용하는 WCF 서비스 설정"이란 무엇을 의미합니까? 왜 네가 이걸하고 싶어하는지 이해가 안되니? 분명히 메시지를 보내고 싶다면 WCF 채널이 아니라 proc에서 메시지를 보내야합니다. 어쨌든, 해당 포트 번호가 이미 다른 서비스에서 사용되고 있지 않은지 확인 했습니까? – stephenl
@stephenl 내 말은 서비스가 동일한 컴퓨터의 연결 만 받아들이도록하려는 것입니다. –