2013-12-19 3 views
3

ASP.NET 응용 프로그램에서 웹 서비스에 액세스하는 동안이 문제가 발생합니다.
그러나이 문제는 Windows 서버에서 호스팅 될 때 발생합니다.
데스크톱에서 호스팅 될 때 제대로 작동합니다.
HttpWebRequest 객체로 웹 서비스를 호출하고 있습니다.0x80004005 연결된 당사자가 일정 기간 후에 제대로 응답하지 않아 연결 시도가 실패했습니다.

심지어 HTML/Java Script 응용 프로그램에서 서버에서 정상적으로 작동합니다. 서버에서 호스팅되는 ASP.NET 응용 프로그램에서만 문제가 발생합니다. 다음과 같은 오류가 발생합니다. IIS 8.0이 서버에 설치됩니다.

Unable to connect to the remote server 
System.Net.Sockets.SocketException (0x80004005): 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 153.2.228.76:443 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, Exception& exception) 
at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context) at System.Net.HttpWebRequest.GetRequestStream() at VSPTestApplication.UPS.CalculateRate_Click(Object sender, EventArgs e) 
System.IO.Stream GetRequestStream(System.Net.TransportContext ByRef) 
+0

에 오신 것을 환영합니다 SO. 바탕 화면에 호스팅함으로써 서비스 클라이언트 인 ASP.NET 응용 프로그램과 서비스가 동일한 컴퓨터, 즉 사용자의 컴퓨터에서 실행되고 있음을 의미합니까? 문제를 해결하여 문제가 해결 된 상황과 문제가되는 상황을 명확하게하십시오. – J0e3gan

+0

답장을 보내 주셔서 대단히 감사합니다. 그것은 단지 ASP.NET 응용 프로그램입니다. 내 데스크톱에 설치된 IIS에서 호스팅 될 때 잘 동작한다는 뜻입니다. 하지만 Windows 서버에 설치된 IIS에서 동일한 응용 프로그램을 호스팅하면 작동하지 않습니다. –

+0

오류가 발생했을 때 서비스 클라이언트 및 서비스 인 ASP.NET 응용 프로그램이 다른 컴퓨터에있는 경우 클라이언트 컴퓨터에서 원격 컴퓨터로 연결 문제를 해결해야합니다. 웹 브라우저, 텔넷 등 – J0e3gan

답변

0

오류 메시지에서 사용자가 HTTPS URL을 찾으려고한다는 것을 알았습니다. 이것은 코드가 다른 사용자 컨텍스트에서 실행되기 때문에 IIS에서 aspnet을 실행할 때 까다로울 수 있습니다. 그리고 필요한 인증서가 그 맥락에서 설치되지 않을 수도 있습니다. 예를 들어 대상 서버에 클라이언트 컴퓨터 (asp.net/iis/windows)가 신뢰하지 않는 CA가 서명 한 인증서가있는 경우 요청이 성공하지 못합니다.

그러나 인증서 오류가 명확하게 나타납니다. 그것은 연결 실패로 나타나지 않을 것입니다.

system.net 로깅 기능을 사용하여 로그 파일을 만드는 것이 좋습니다. 그러면 문제를 해결하는 데 도움이됩니다. 또한 Windows 서버에서 wireshark를 실행하고 서버가 연결하려는 위치를 확인해야합니다. Windows 서버가 대상에 연결할 수없는 것처럼 간단 할 수도 있습니다. 또는 중간에 프록시가있어 네트워크 경로가 망가질 수 있습니다.

system.net 로깅을 설정하려면 코드를 실행하는 앱과 동일한 디렉토리에 다음 config 파일을 넣을 수 있습니다. 로깅에 대한 자세한 내용은

<?xml version="1.0" encoding="UTF-8" ?> 

<configuration> 
<system.diagnostics> 
<trace autoflush="true" /> 

<sources> 
<source name="System.Net"> 

<listeners> 
    <add name="System.Net"/> 
</listeners> 
</source> 
<source name="System.Net.Sockets"> 
<listeners> 
    <add name="System.Net"/> 
</listeners> 
</source> 
<source name="System.Net.Cache"> 
<listeners> 
    <add name="System.Net"/> 
</listeners> 
</source> 
</sources> 
<sharedListeners> 
    <add 
     name="System.Net" 
     type="System.Diagnostics.TextWriterTraceListener" 
     initializeData="System.Net.trace.log" 
    /> 
</sharedListeners> 
<switches> 
    <add name="System.Net" value="Verbose" /> 
    <add name="System.Net.Sockets" value="Verbose" />    
    <add name="System.Net.Cache" value="Verbose" /> 
</switches> 

:

creating a tracelog with system.net

관련 문제