2015-10-15 6 views
8

Hier ist das Stück Code:Timeout-Fehler für AWS SNSClient Publish Anfrage

     //Publishing the topic 
         snsClient.Publish(new PublishRequest 
         { 
          Subject = Constants.SNSTopicMessage, 
          Message = snsMessageObj.ToString(), 
          TopicArn = Settings.TopicArn 
         }); 

ich das unten stehende Störung erhalte:

The underlying connection was closed: A connection that was expected to be kept alive was closed by the server.

Und hier ist der Screenshot von detaillierten Fehler: enter image description here

Aber nicht in der Lage, eine Idee zu bekommen, wie das zu lösen ist. Jeder Hinweis oder Link wird hilfreich sein.

+0

Vielleicht zu offensichtlich, aber ist SnsClient gültig (d. H. Ordnungsgemäß verbunden, vorhandene Anmeldeinformationen, Region ...)? – Gonfva

+0

Ja @Gonfva. Sie sind gültig. Ich kann die Operationen durchführen. Aber ich bekomme den Fehler selten. Aber es muss immer noch angesprochen werden. –

Antwort

2

Wir hatten genau das gleiche Problem mit uns geschehen. Wir haben diesen Fehler etwa 40 Mal am Tag erhalten, das waren weniger als 0,1% der erfolgreichen Push-Benachrichtigungen, die wir versandt haben.

Unsere Lösung? Aktualisieren Sie das AWSSDK NuGet-Paket von 1.5.30.1 auf 2.3.52.0 (die neueste Version von v2, um das Upgrade zu vereinfachen). Sobald wir aktualisiert haben, hörten die Fehler auf. Ich habe viele Versionshinweise durchgesehen und konnte nichts finden, was dieses Problem besonders erwähnt. Wir haben keine Ahnung, warum das Update funktioniert hat, aber es hat funktioniert.

Ich hoffe, dass dies Ihnen und allen anderen hilft, dieses Problem zu beheben.

+0

Danke für die Eingabe. Ich werde die Version aktualisieren und Ihnen die Ergebnisse mitteilen. –

+0

Ja. Du hast Recht. Up Gradation repariert das Ding. Jetzt bekomme ich keine Zeitüberschreitungen. Thx eine Tonne. –

0

Dieses Problem kann auftreten, wenn eine oder mehrere der folgenden Bedingungen erfüllt sind:

• Ein Netzwerkausfall auftritt.

• Ein Proxy-Server blockiert die HTTP-Anfrage.

• Ein DNS-Problem (Domain Name System) tritt auf.

• Ein Netzwerkauthentifizierungsproblem tritt auf.

[https://nilangshah.wordpress.com/2007/03/01/the-underlying-connection-was-closed-unable-to-connect-to-the-remote-server/]1

+0

Das Problem tritt nur selten auf. Wie in 6000 sns msgs nur 10-15 mal max. Also, ich bin mir nicht sicher über Ihre Vorschläge zu den Problemen. –

+0

@ ch.smrutiranjanparida, Überprüfen Sie Ihren Amazon sns-Initialisierungscode. Amazon wird die Verbindung nach einiger Zeit automatisch beenden. Also, ich denke du solltest den ganzen Code einfügen. so können die Leute leicht verstehen, aus welchem ​​Satz Sie diese Art von Problem bekommen. –

+0

@BhavikPatel, hier ist der Initialisierungscode: snsClient = new AmazonSimpleNotificationServiceClient (Settings.AccessKey, Settings.SecretKey, regionEndPoint); –

0
  • stellen Sie sicher, Ihre Nutzlasten Größe sollte nicht mehr als 256 kb
  • stellen Sie sicher, überschreiten Sie konfigurierte Timeout-Eigenschaft des PutObjectRequest hatte

eine aws Blick Probe sns Nehmen Anfrage Code (von https://stackoverflow.com/a/13016803/2318852)

// Create topic 
string topicArn = client.CreateTopic(new CreateTopicRequest 
{ 
    Name = topicName 
}).CreateTopicResult.TopicArn; 

// Set display name to a friendly value 
client.SetTopicAttributes(new SetTopicAttributesRequest 
{ 
    TopicArn = topicArn, 
    AttributeName = "DisplayName", 
    AttributeValue = "StackOverflow Sample Notifications" 
}); 

// Subscribe an endpoint - in this case, an email address 
client.Subscribe(new SubscribeRequest 
{ 
    TopicArn = topicArn, 
    Protocol = "email", 
    Endpoint = "[email protected]" 
}); 

// When using email, recipient must confirm subscription 
Console.WriteLine("Please check your email and press enter when you are subscribed..."); 
Console.ReadLine(); 

// Publish message 
client.Publish(new PublishRequest 
{ 
    Subject = "Test", 
    Message = "Testing testing 1 2 3", 
    TopicArn = topicArn 
}); 

// Verify email receieved 
Console.WriteLine("Please check your email and press enter when you receive the message..."); 
Console.ReadLine(); 

// Delete topic 
client.DeleteTopic(new DeleteTopicRequest 
{ 
    TopicArn = topicArn 
}); 
+0

gibt es eine Möglichkeit Nutzlastgröße zu überprüfen. Wie wenn sonst oder Versuch, Blockstück des Codes zu fangen. –

+0

Ich habe die Nutzdaten überprüft. In meinem Fall ist es maximal 3kb-4kb. Die Grenze ist 256kb. Also ich glaube nicht, Payload ist ein Problem hier. @ Bhavik –