c# - 호스트 컴퓨터의 소프트웨어에 의해 설정된 연결이 중단되었습니다.



(1)

당신은 아마 타임 아웃을 치고 있습니다. 우선, Keepalive를 다시 켭니다. 둘째, 요청에 대한 타임 스탬프를 확인하고 회신합니다. 발신자와 수신자간에 방화벽이있는 경우 유휴 시간 제한으로 인해 연결을 닫지 않았는지 확인하십시오. 과거에는 이러한 두 가지 문제가 있었지만 일반적인 소켓 프로그래밍에서는 DB가 아닌 프로그래밍 문제가있었습니다.

미안하지만 조금 길다면 좋겠지 만 그보다 덜 게시하는 것이 좋을 것 같아.

이것도 내 첫 번째 게시물이기 때문에 용서해주십시오.

나는 이것을 얼마 동안 알아 내려고 애썼다. 그리고 아무 소용이 없으면, 전에 거기에서 만난 천재가 있기를 바란다.

이것은 간헐적 인 문제이며 재현하기가 어렵습니다. 실행중인 코드는 단순히 웹 서비스를 호출합니다. 웹 서비스 호출은 루프에 있습니다 (그래서 우리는이 작업을 1500 번 이상 수행 할 수있었습니다)

다음은 오류의 원인이되는 코드입니다.

HttpWebRequest groupRequest = null;
WebResponse groupResponse = null;            
try
{    
    XmlDocument doc = new XmlDocument();
    groupRequest = (HttpWebRequest)HttpWebRequest.Create(String.Format(Server.HtmlDecode(Util.GetConfigValue("ImpersonatedSearch.GroupLookupUrl")),userIntranetID));
    groupRequest.Proxy = null;
    groupRequest.KeepAlive = false;
    groupResponse = groupRequest.GetResponse();
    doc.Load(groupResponse.GetResponseStream());
    foreach (XmlElement nameElement in doc.GetElementsByTagName(XML_GROUP_NAME))
    {
         foreach (string domain in _groupDomains )
         {
             try
             {
                 string group = new System.Security.Principal.NTAccount(domain, nameElement.InnerText).Translate(typeof(System.Security.Principal.SecurityIdentifier)).Value;
                 impersonationChain.Append(";").Append(group);                            
                 break;
             }
             catch{}                        
         } // loop through            
     }
 }
 catch (Exception groupLookupException)
 {
     throw new ApplicationException(String.Format(@"Impersonated Search ERROR:  Could not find groups for user<{0}\{1}>", userNTDomain, userIntranetID), groupLookupException);
 }
 finally
 {
     if ( groupResponse != null )
     {
         groupResponse.Close();
     }
 }

때때로 발생하는 오류는 다음과 같습니다.

Could not find groups for user<DOMAIN\auser> ---> System.IO.IOException: Unable to read
data from the transport connection: An established connection was aborted by the
software in your host machine. ---> System.Net.Sockets.SocketException: An established  
connection was aborted by the software in your host machine at  
System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags  
socketFlags) at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32  
size) --- End of inner exception stack trace --- at System.Net.ConnectStream.Read(Byte[]  
buffer, Int32 offset, Int32 size) at System.Xml.XmlTextReaderImpl.ReadData() at  
System.Xml.XmlTextReaderImpl.ParseDocumentContent() at  
System.Xml.XmlLoader.LoadDocSequence  
(XmlDocument parentDoc) at System.Xml.XmlDocument.Load(XmlReader reader) at
System.Xml.XmlDocument.Load(Stream inStream) at  
MyWebServices.ImpersonatedSearch.PerformQuery(QueryParameters parameters,  
String userIntranetID, String userNTDomain)--- End of inner exception stack trace  
---at MyWebServices.ImpersonatedSearch.PerformQuery(QueryParameters parameters, String userIntranetID, String userNTDomain)  
--- End of inner exception stack trace ---  
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message,  
WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName,  
Object[] parameters) at MyProgram. MyWebServices.ImpersonatedSearch.PerformQuery  
(QueryParameters parameters, String userIntranetID, String userNTDomain)  
at MyProgram.MyMethod()

죄송합니다. 읽으려면 많은 코드가 필요했습니다.
이것은 약 1700 년에 약 30 번 발생합니다.




c#