标签: timeout

以编程方式在调试模式下设置WCF超时

我在服务器和客户端之间的通信中使用WCF(都是用C#编写的).

在释放模式下,时间应设置为~20秒,但在调试模式下,我想将它们设置为更高的值,以便我可以调试/插入代码而不会发生超时.

我知道我可以通过修改app.config文件来更改超时.但是,我有两个不同的绑定和4个超时值,所以我不得不在几个地方改变,它很容易忘记.

为了解决这个问题,我想在我的代码中有一个小的#if DEBUG-section,它以编程方式将超时值更改为1小时.

我尝试使用以下代码执行此操作:

Configuration configuration = 
       ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
ServiceModelSectionGroup serviceModel = 
       ServiceModelSectionGroup.GetSectionGroup(configuration); 

BindingsSection bindings = serviceModel.Bindings;

foreach (var configuredBinding in bindings.WSHttpBinding.ConfiguredBindings)
{
 configuredBinding.CloseTimeout = new TimeSpan(0, 30, 0);
 configuredBinding.OpenTimeout = new TimeSpan(0, 30, 0);
Run Code Online (Sandbox Code Playgroud)

但*Timeout属性是readonly所以我得到编译错误.

我不喜欢以编程方式从头开始创建绑定的想法.如果我更改了app.config中的一些属性,我必须记住在代码中进行相同的更改,以确保调试行为类似于发布行为(超时除外).

怎么办呢?

configuration wcf timeout

10
推荐指数
1
解决办法
1万
查看次数

Asp.Net(MVC):哪个会话超时是什么?

我已经制作了一个Asp.net MVC网站,我对不同的超时设置感到很困惑.

有什么区别:

  • web.config中的SessionState超时:

Web.config sessionState超时

  • 应用程序池超时

应用程序池超时

  • Asp.Net会话超时属性

    Asp.Net会话超时

如果我想要(例如)6小时的时间,我应该设置哪一个?他们都是?只有一些?

asp.net iis session timeout

10
推荐指数
1
解决办法
6987
查看次数

Linux下的Plink超时和代理

我在bash中创建了一个脚本,它创建了一个服务器列表的连接.每次连接后,如果成功,我执行一个命令.连接处于循环中.

知道我使用Plink.我的脚本有效,但服务器无法访问需要花费太多时间.当我想通过代理到达服务器时,我遇到了另一个问题.

我有两个目标:

  • 在Linux下命令行中配置Plink超时使其更短("致命错误:连接超时"需要很长时间才能显示).

  • 配置Plink的代理配置,使其等效于SOCKS5和PuTTY的代理主机名.

我不知道是否有可能.如果你有更好的方法,我会很高兴知道它

问候,Mageni

linux proxy plink timeout

10
推荐指数
1
解决办法
2559
查看次数

c#检测tcp断开连接

我有两个简单的应用程序:

  • 等待特定tcp端口以供客户端连接的服务器应用程序.然后听他说的话,发回一些反馈并断开那个客户端.

  • 一个表单应用程序连接到服务器应用程序,然后说出一些内容,然后等待反馈并断开与服务器的连接,然后在表单中显示反馈.

虽然服务器应用程序似乎行为正常(我已经使用Telnet对其进行了测试,并且我看到反馈并且我看到反馈后直接发生了断开连接),但表单应用程序似乎并未发现与服务器的断开连接.(即使在服务器断开连接后,TcpClient.Connected似乎也保持正常)

我的问题是:为什么TcpClient.Connected保持正确,我怎么知道服务器是否/何时断开连接?

这是我的完整代码:

表格申请:

using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace Sender
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void sendButton_Click(object sender, EventArgs e)
        {
            TcpClient tcpClient = new TcpClient();
            tcpClient.Connect(IPAddress.Parse("127.0.0.1"), 81);
            responseLabel.Text = "waiting for response...";
            responseLabel.Invalidate();

            // write request
            NetworkStream networkStream = tcpClient.GetStream();
            byte[] buffer = (new ASCIIEncoding()).GetBytes("Hello World! ");
            networkStream.Write(buffer, 0, buffer.Length);
            networkStream.Flush();

            // read response
            Thread readThread = …
Run Code Online (Sandbox Code Playgroud)

c# timeout tcpclient disconnect

10
推荐指数
1
解决办法
3万
查看次数

connect()在阻塞套接字上返回"正在进行中的操作"?

我有一个阻塞套接字(至少它在下面的代码中出现):

    sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if (sock < 0) {
            ERROR("%s: error opening socket", __func__);
            return (RESP_ERROR);
    }

    t.tv_sec = timeout;
    t.tv_usec = 0;

    int rf = fcntl(sock, F_GETFD);
    ERROR("fcntl ret=%d, ret & O_NONBLOCK = %d", rf, rf & O_NONBLOCK);

    if ((setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (char *)&t, sizeof (t)) < 0)
        || (setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, (char *)&t, sizeof (t)))) {
            strerror_r(errno, err, 254);
            ERROR("%s: error on setsockopt -> %s", __func__, err);
            close(sock);
            return (RESP_ERROR);
    }

    rf = fcntl(sock, F_GETFD);
    ERROR("after …
Run Code Online (Sandbox Code Playgroud)

c sockets linux timeout connect

10
推荐指数
1
解决办法
1万
查看次数

C#MongoDB驱动程序忽略超时选项

我们正在使用Mongo DB的C#驱动程序(1.9.1).如果DB不可访问,我们有一些需要运行的回退逻辑,但是默认超时太长.我们试图改变它,但我们放置的值被忽略了.对于测试,我们使用的是无响应机器的IP.

我们尝试在连接字符串中设置超时:

 <add key="Mongo" value="mongodb://xxx.xxx.xxx.xxx:27017/?socketTimeoutMS=2000&amp;connectTimeoutMS=2000&amp;waitqueuetimeoutms=2000"/>
Run Code Online (Sandbox Code Playgroud)

或者通过代码:

var client = new MongoClient(new MongoClientSettings
{
    Server = new MongoServerAddress("xxx.xxx.xxx.xxx"),
    SocketTimeout = new TimeSpan(0, 0, 0, 2),
    WaitQueueTimeout = new TimeSpan(0, 0, 0, 2),
    ConnectTimeout = new TimeSpan(0, 0, 0, 2)
});
Run Code Online (Sandbox Code Playgroud)

两次请求在平均约20秒后超时.

我们设置超时选项的方式可能有什么问题.

c# timeout mongodb

10
推荐指数
1
解决办法
8444
查看次数

使用Alamofire [swift]为每个请求设置客户端超时?

我正在尝试为Alamofire for Swift的每个请求设置一个客户端超时.首席架构师告诉我在NSURLRequest上设置这个,但我对如何在实践中真正做到这一点感到困惑.

做过这个的人可以举个例子吗?谢谢!

client timeout nsurlrequest swift alamofire

10
推荐指数
1
解决办法
1万
查看次数

9
推荐指数
1
解决办法
4902
查看次数

在Scala 2.10中杀死或超时未来

嗨,

我正在使用Scala 2.10和新的期货库,我正在尝试编写一些代码来测试无限循环.我使用a scala.concurrent.Future在单独的线程中使用循环运行代码.然后我想等一会儿做一些测试,然后杀死单独的线程/未来.我已经看过,Await.result但实际上并没有杀死未来.有没有办法超时或杀死新的Scala 2.10期货?

我宁愿不必为这个简单的部分添加外部依赖项,如Akka.

timeout scala future scala-2.10

9
推荐指数
1
解决办法
4196
查看次数

如何在可配置的超时内响应Rails请求

我希望在没有使用Timeout模块的情况下在控制器的操作中实现以下行为:

class AdminController < ApplicationController
  def example
    Timeout.timeout(params[:timeout].to_i) do
      ... # try to process the request within params[:timeout] seconds
    end
  rescue Timeout::Error
    render nothing: true, status: :gateway_timeout
  end
end
Run Code Online (Sandbox Code Playgroud)

我想避免使用Timeout,因为它导致我的应用程序中出现许多错误,包括数据库连接泄漏.报告的其他一些问题:http: //www.mikeperham.com/2015/05/08/timeout-rubys-most-dangerous-api/

ruby timeout ruby-on-rails thread-safety

9
推荐指数
1
解决办法
1062
查看次数