我在服务器和客户端之间的通信中使用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中的一些属性,我必须记住在代码中进行相同的更改,以确保调试行为类似于发布行为(超时除外).
怎么办呢?
我已经制作了一个Asp.net MVC网站,我对不同的超时设置感到很困惑.
有什么区别:


Asp.Net会话超时属性

如果我想要(例如)6小时的时间,我应该设置哪一个?他们都是?只有一些?
我在bash中创建了一个脚本,它创建了一个服务器列表的连接.每次连接后,如果成功,我执行一个命令.连接处于循环中.
知道我使用Plink.我的脚本有效,但服务器无法访问需要花费太多时间.当我想通过代理到达服务器时,我遇到了另一个问题.
我有两个目标:
在Linux下命令行中配置Plink超时使其更短("致命错误:连接超时"需要很长时间才能显示).
配置Plink的代理配置,使其等效于SOCKS5和PuTTY的代理主机名.
我不知道是否有可能.如果你有更好的方法,我会很高兴知道它
问候,Mageni
我有两个简单的应用程序:
等待特定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) 我有一个阻塞套接字(至少它在下面的代码中出现):
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) 我们正在使用Mongo DB的C#驱动程序(1.9.1).如果DB不可访问,我们有一些需要运行的回退逻辑,但是默认超时太长.我们试图改变它,但我们放置的值被忽略了.对于测试,我们使用的是无响应机器的IP.
我们尝试在连接字符串中设置超时:
<add key="Mongo" value="mongodb://xxx.xxx.xxx.xxx:27017/?socketTimeoutMS=2000&connectTimeoutMS=2000&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秒后超时.
我们设置超时选项的方式可能有什么问题.
我正在尝试为Alamofire for Swift的每个请求设置一个客户端超时.首席架构师告诉我在NSURLRequest上设置这个,但我对如何在实践中真正做到这一点感到困惑.
做过这个的人可以举个例子吗?谢谢!
NSData datawithcontentsofurl是否有超时期限?
嗨,
我正在使用Scala 2.10和新的期货库,我正在尝试编写一些代码来测试无限循环.我使用a scala.concurrent.Future在单独的线程中使用循环运行代码.然后我想等一会儿做一些测试,然后杀死单独的线程/未来.我已经看过,Await.result但实际上并没有杀死未来.有没有办法超时或杀死新的Scala 2.10期货?
我宁愿不必为这个简单的部分添加外部依赖项,如Akka.
我希望在没有使用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/