WinInet 设置会话超时

Posted

技术标签:

【中文标题】WinInet 设置会话超时【英文标题】:WinInet set session timeout 【发布时间】:2013-06-06 01:53:35 【问题描述】:

我在 C/C++ 应用程序中使用 WinInet 连接到 ASP.NET Web 服务。 我想增加我的会话超时时间。 目前不知何故 SESSION Time out 是 20 分钟,我想将它增加到 50 分钟。 它对INTERNET_OPTION_XXXXX in 选项使用哪个选项

InternetSetOption(hInstance, INTERNET_OPTION_XXXXX,(LPVOID) &timeout, sizeof(timeout));

【问题讨论】:

已解决:会话超时设置在 IIS 上,是 WebServive 的属性。应用程序无法控制它。 【参考方案1】:

与具有 WinHttpSetTimeouts 的 WinHTTP 不同,WinINet 上没有可用的等效函数。

【讨论】:

【参考方案2】:

我意识到这是一个老问题,但似乎没有关于如何在 SO 上执行此操作的信息。所以我发布这个以防有人想知道如何使用 WinINet 设置超时。

通常您会使用INTERNET_OPTION_CONNECT_TIMEOUTINTERNET_OPTION_RECEIVE_TIMEOUTINTERNET_OPTION_SEND_TIMEOUTInternetSetOption。有关选项标志的详细信息,请参见此处:https://docs.microsoft.com/en-us/windows/win32/wininet/option-flags

但是,有一个错误似乎 MS 大约 20 年没有修复。上面的超时标志根本不起作用。

所以解决这个问题的方法是创建第二个工作线程来监视连接请求。如果第二个请求在超时设置内没有收到来自服务器的响应,它将终止主连接请求。有关详细信息和示例,请参阅此 MS 知识库文章: https://mskb.pkisolutions.com/kb/224318

【讨论】:

以上是关于WinInet 设置会话超时的主要内容,如果未能解决你的问题,请参考以下文章

WinInet FtpOpenFile 超时

WinInet 和 SessionCookies

使用 wininet 设置代理设置

wininet如何处理cookies

FtpGetFile WinINet 永远不会返回

WinInet vs WinHttp(服务或类似服务的进程)