AWS SNSClient发布请求超时错误

时间:2015-10-15 07:44:17

标签: asp.net c#-4.0 amazon-web-services amazon-sns

这是一段代码:

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

我收到以下错误:

  

底层连接已关闭:预期的连接   保持活着由服务器关闭。

这是详细错误的屏幕截图: enter image description here

但无法知道如何解决这个问题。任何提示或链接都会有所帮助。

3 个答案:

答案 0 :(得分:2)

我们遇到了完全相同的问题。我们每天大约有40次出现此错误,不到我们发出的成功推送通知的0.1%。

我们的解决方案?将AWSSDK NuGet软件包从1.5.30.1更新到2.3.52.0(最新的v2版本,以便于升级)。一旦我们更新,错误就会停止发生。我浏览了很多发行说明,但没有找到任何具体提到这个问题的内容。我们不知道为什么更新有效,但确实如此。

我希望这可以帮助您和其他任何人解决此问题。

答案 1 :(得分:0)

如果满足下列一个或多个条件,则可能会出现此问题:

•发生网络中断。

•代理服务器阻止HTTP请求。

•出现域名系统(DNS)问题。

•出现网络身份验证问题。

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

答案 2 :(得分:0)

  • 确保您的有效负载大小不超过256 kb
  • 确保您已配置PutObjectRequest的超时属性

看看示例aws sns请求代码(来自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 = "sample@example.com"
});

// 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
});