2009-08-07 4 views
10

Windows Server 2003 컴퓨터에서 단일 Windows 서비스로 호스팅되는 두 개의 WCF 서비스가 있습니다. Windows 서비스가 시간 초과 이벤트가 발생할 때와 같이 WCF 서비스 중 하나에 액세스해야하는 경우 노출 된 다섯 개의 명명 된 파이프 끝점 중 하나 (다른 서비스 계약) 중 하나를 사용합니다. 또한이 서비스는 두 개의 서비스 각각에 대한 HTTP MetadataExchange 끝점과 서버 외부의 소비자에 대한 net.tcp 끝점을 노출합니다.net.pipe에서 수신하는 끝점이 없습니다. // localhost/

보통 일이 잘 작동하지만, 매 번 한 동안 나는 이런 식으로 뭔가 보이는 오류 메시지가 얻을 :

System.ServiceModel.EndpointNotFoundException을 : net.pipe에서 듣기에는 엔드 포인트가 없었다 : // 메시지를 받아 들일 수있는 localhost/IPDailyProcessing. 이것은 종종 잘못된 주소 또는 SOAP 조치로 인해 발생합니다. 자세한 내용은 InnerException을 참조하십시오. ---> System.IO.PipeException : 파이프 끝점 'net.pipe : // localhost/IPDailyProcessing'로컬 컴퓨터에서 찾을 수 없습니다. --- 내부 예외 스택 추적의 끝 --- 서버 스택 추적 : System.ServiceModel.Channels.NamedPipeConnectionPoolRegistry.NamedPipeConnectionPool.GetPoolKey에서 System.ServiceModel.Channels.PipeConnectionInitiator.GetPipeName (열린 우리당 URI) 에서 (EndpointAddress를 주소 System.ServiceModel.Channels.CommunicationObject.Open에서 System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen (타임 아웃 시간 범위)에서 System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection (타임 아웃 시간 범위) 에서 우리당 통해) (타임 아웃 시간 범위) System.ServiceModel.Channels.ServiceChannel.OnOpen (TimeSpan 제한 시간) at System.ServiceModel.Channels.CommunicationObject.Open (TimeSpan 제한 시간) at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call (ServiceChannel 채널, TimeSpan 시간 초과) at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce (TimeSpan 제한 시간, CallOnceManager 종속) 에서 System.ServiceModel.Channels.ServiceChannel.EnsureOpened (TimeSpan 제한 시간) 에서 System.ServiceModel.Channels.ServiceChannel.Call (String 동작, Boolean oneway, ProxyOperationRuntime 작업, Object [] ins, Object [] 출력, TimeSpan 제한 시간) System.ServiceModel.Channels.ServiceChannel.Call (System.ServiceModel.Channels.ServiceChannelProxy.InvokeService (IMethodCallMessage 메서드 호출, ProxyOperationRuntime 작업)에서 )에서내가 원하는 때 그것을 반복 할 수 없기 때문에 미치게입니다 System.ServiceModel.Channels.ServiceChannelProxy.Invoke (iMessage를 메시지)

이 안정적으로 발생하지 않습니다에서. 내 Windows 서비스에서 나는 또한 일부 시간 이벤트 및 일부 파일 청취자가 있지만 이들은 비교적 드문 이벤트입니다. 누군가 내가 왜 문제가 생길지 모르는 아이디어가 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.

+0

동일한 문제로 어려움을 겪고 있습니다. 해결책을 찾았습니까? 주기적으로이 오류가 발생합니다. 'net.pipe : // localhost/d927b6b5-5994-4bd2-b92a-2fbdbae18d28/SendEmailWorkflow/Creation'이라는 끝점 주소의 서비스가 해당 프로토콜에서 사용할 수 없으므로 예외가 발생합니다. 주소'. 서비스가 IIS에서 호스팅되지 않으므로 IIS/AppPool의 규칙이 다시 설정됩니다. – Rohland

답변

0

.net이라는 이름의 파이프를 사용 해본 적이 없기 때문에이 문제가 당신의 토론과 밀접한 지 아닌지는 잘 모르겠지만, .net TCP 소켓 엔드 포인트에는 알려진 버그가 있었음을 기억합니다. 분명한 이유없이 종료되었습니다. "불행히도 공식적인 MS 응답은 소켓을 통해 메시지를 보내기 전에 소켓이 여전히 켜져 있는지 확인하고 그렇지 않은 경우 다시 열어주는"해결 방법 "이었습니다. 명명 된 파이프 끝점은 "신뢰할 수있는 TCP 끝점"만큼 신뢰할 수 없다고 생각하지만 "명명 된 파이프로 확장되는지 여부를 확인하기 위해"알려진 정기적 인 TCP 소켓 오류 "를 조사하고 싶을 수도 있습니다.

죄송합니다. 실제로 답변이 아니므로 메시지 등을 보내시기 전에 점검의 비효율을 추가해야 할 수도 있습니다.

+0

설명하는 "알려진 버그"및 "공식 MS 응답"에 대한 링크를 제공 할 수 있습니까? –

+0

@Chris Dickson : 잠시 지났지 만, 나는 그들을 찾아서 여기에 추가하려고 노력할 것입니다. 미안하지만 시간이 좀 걸릴거야. –

+0

그래, 우리가 가지고 있던 버그 (그 당시에는 그 자체를 적절하게 식별하지 못함)가 소켓 소진으로 분리되어 지금은 더 잘 문서화 된 것으로 밝혀졌습니다. 그래서, 당신이 당신의 소켓을 다 써 버리지 않으면, 나는 나의 제안이 타당한 지 의심 스럽다. 아직 소켓을 소진하고 있는지 여부를 조사 할 수 있습니다. –

7

"Net.Pipe Listener Adapter"서비스가 서비스 관리 콘솔에서 실행 중인지 확인하십시오. 이것은 WAS에서 명명 된 파이프에 대한 요청을 수신하는 데 사용됩니다.

+0

IIS에서 호스팅되는 net.pipe를 사용하여이 오류 메시지가 나타납니다. 'iisreset'을 자체적으로 고정 된 것으로 설정하고,이 서비스를 다시 시작하면 + 'iisreset'가 문제를 해결합니다. – jasper

0

과거에 비슷한 오류가 발생했습니다. 기억이 맞으면 서비스에 전달되는 데이터가 잘못되었습니다. 제 경우에는 데이터 크기에 문제가있었습니다 (WSHttpBinding을 사용 했으므로 http 기본 한계가 있음). 문제를 발견 한 방법은 관련 메소드에 로깅을 추가하고 문제가있는 데이터를 찾은 다음 일부 디버그 친화적 인 환경에서 문제를 재현하고 찾은 데이터로 충돌 (충돌)을 시도하는 것이 었습니다.

예외 메시지가 WCF에서 언젠가 발생하는 문제와 관련이 없습니다.

+0

그냥 게시 날짜 날짜 게시 날짜 :) 저자 : 문제를 해결 한 경우 - 솔루션 또는 문제 이유를 게시하십시오. – Kamarey

관련 문제