문제

Windows Form 프로그램에서 제 3 자 공급 업체의 웹 서비스를 호출 할 수 있습니다. WCF 웹 서비스에서 동일한 웹 서비스 및 웹 메소드와 동일한 URL을 호출하려고하면 다음 오류가 발생합니다.

ExportValuationPolicyNumber:Exception=System.Net.WebException: Unable to connect to the remote server ---> 
System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly 
respond after a period of time, or established connection failed 
because connected host has failed to respond 66.77.241.76:80

   at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)
   --- End of inner exception stack trace ---
   at System.Net.HttpWebRequest.GetRequestStream()
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at TFBIC.RCT.WCFWebServices.ExpressLync.ValuationServiceWse.ExportValuationPolicyNumber(String PolicyNumber) in c:\Source\TFBIC.RCT.WCFWebServices\TFBIC.RCT.WCFWebServices\Web References\ExpressLync\Reference.cs:line 519
   at TFBIC.RCT.WCFWebServices.ValuationService.ExportValuationPolicyNumber(String PolicyNumber) in c:\Source\TFBIC.RCT.WCFWebServices\TFBIC.RCT.WCFWebServices\ValuationService.svc.cs:line 97

기본적으로 공급 업체 .AMSX/WSE3 서비스를 위해 WCF 래퍼를 작성하려고합니다. Microsoft는 WCF가 WSE3를 호출 할 수 있지만 SSL을 켜는 경우에만 WSL을 켜고 내 공급 업체가 SSL 연결을 허용하지 않는다고 말합니다. 그래서 저는 래퍼를 쓰기 때문에 Biztalk 2009에서 전화 할 수 있습니다. 지금 당장 콘솔 프로그램을 통해 래퍼를 테스트하고 있습니다.

디버그하기 위해 무엇을 할 수 있습니까? WCF 서비스가 .AMSX 서비스를 호출하는 WCF 서비스 전후에 EventLog 트레이스를 추가했습니다. 그래서 그것이 부는 곳 (위의 오류의 줄 번호)을 알고 있습니다.

내 web.config에 다음이 있습니다.

<microsoft.web.services3>
        <diagnostics>
                <trace enabled="true" 
                           input="c:\inetpub\wwwroot\wsetraces\InputTrace.webinfo" 
                           output="c:\inetpub\wwwroot\wsetraces\OutputTrace.webinfo" />
                <detailedErrors enabled="true" />
        </diagnostics>
</microsoft.web.services3>

그리고 나는 디렉토리에 모든 사람에게 완전한 액세스를 주었다. 그러나 거기에는 흔적이 나타나지 않았다.

내가 이것을 디버깅하기 위해 찾거나 옆에 시도 할 수있는 것들은 무엇입니까?

이론적으로 "핑"결과는 중요하지 않아야합니다. 웹 사이트가 Windows Form 프로그램에서 작동하기 때문입니다.

그럼에도 불구하고 - 여기에 핑이 보여주는 것이 있으며 나에게 약간 의심의 여지가 있습니다.

C : Users uxnxw01> ping rct.msbexpress.net

Pinging rct.msbexpress.net [66.77.241.56] with 32 bytes of data:
Reply from 10.193.99.5: Destination net unreachable.
Reply from 10.193.99.5: Destination net unreachable.
Request timed out.
Reply from 10.193.99.5: Destination net unreachable.

Ping statistics for 66.77.241.56:
    Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),

감사,

닐 월터스


Wireshark 분석

나는 Wireshark를 실행했습니다 - 아래에 몇 가지 결과를 게시했습니다. 그러나 더 많이 읽은 후에는 항상 "대상이없는"이라고 말하는 것은 아닙니다. 그러나 실패한 경우에는 데이터 부패를 얻지 못합니다. 나는 여전히 다음에 무엇을 해야할지 혼란스러워합니다. 패킷을 비교했지만 느리고 혼란 스럽습니다. 예를 들어, 나는 여전히 요청 패킷을 전달하는 키 (특정 경찰)를 찾지 못했습니다. 또한 효과가있는 "대상이없는 대상"진술도 볼 수 있습니다.

효과가있는 곳에서는 66.77.241.76을 볼 수 없습니다. 회사의 대리 만 볼 수 있습니다. 그러나 WSE3에 프록시를 사용하거나 사용하지 않는 구성 (또는 코드)에서 아무것도 볼 수 없습니다.


텔넷 결과 :

C:\Users\uxnxw01>telnet 66.77.241.56 80
Connecting To 66.77.241.56...Could not open connection to the host, on port 80:
Connect failed

C:\Users\uxnxw01>telnet 66.77.241.76 80
Connecting To 66.77.241.76...Could not open connection to the host, on port 80:
Connect failed

이것이 무엇인지 잘 모르겠습니다. 내가 말했듯이 WSE3 인터페이스를 직접 호출하여 Windows 양식에서 동일한 웹 서비스를 확실히 호출 할 수 있습니다. 나는 그런 식으로 거기에 갈 수 있다는 것을 안다.

두 프로그램의 주요 차이점은 하나가 승리 양식으로 실행되고 WSE3를 직접 호출하고 있다는 것입니다. 그 사람은 작동합니다. 실패한 것은 기본적으로 99% 동일한 코드이며 WCF 서비스로 게시되므로 IIS에 따라 실행됩니다 (콘솔 프로그램은 내 컴퓨터에서 WCF/IIS 서비스를 호출하여 WSE3 서비스를 호출합니다).

IIS가 같은 프록시를 사용하지 않는 이유가 있습니까?

도움이 되었습니까?

해결책

위의 모든 도움 덕분에 진짜 답변은 다음과 같습니다.

valservice.proxy = new System.net.webproxy ( "http : //10.192.xx.xx : 8080", 진실);

IIS에서 실행되는 WCF 서비스는 동일한 프록시를 사용하지 않았으므로 코드에서 수동으로 설정했습니다. 구성 파일 에이 작업을 수행하는 방법이 있는지 확인하기 위해 다른 질문을 게시하겠습니다.

다른 팁

사용하고 싶을 수도 있습니다 Wireshark 네트워크 트래픽에서 무슨 일이 일어나고 있는지 확인합니다.

방화벽에서 핑 요청 (ICMP 패킷)이 비활성화 될 수 있습니다. 따라서 다른 포트에서 상자에 액세스 할 수있는 동안 핑 응답을 되 찾을 수없는 것이 완벽하게 가능합니다.

시도하고 사용하십시오 telnet 포트 80에서 66.77.241.56에 연결하고 응답이 있는지 확인하십시오.

telnet 66.77.241.56 80

대안 적으로, a tracerte 상기 IP 주소는 네트워크 라우팅 또는 NAT와 동일하게 관련이있을 수 있으므로 네트워크 관리자 중 하나에 대해 좀 더 자세한 정보를 제공 할 수 있습니다.

세 번째 가능성은 당신이 명시 적으로 설정해야 할 수도 있다는 것입니다. Proxy 당신의 재산 SoapHttpClientProtocol 비누 클라이언트 인스턴스. Winforms는 이것을 자동으로 선택하지만 웹 서비스/앱에서는 그렇지 않습니다.

다른 사람들의 게시물에 대한 내 의견도 보지만, 진단 로그와 관련하여 WCF 트레이스 로그를 덤프하기위한 구성에있는 XML입니다.

<configuration>

    <system.diagnostics>
        <sources>
            <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
                <listeners>
                    <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData= "MyService.svclog" />
                </listeners>
            </source>
        </sources>
    </system.diagnostics>

</configuration>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top