0

我对以下用例有一个令人费解的情况。

  1. 用户使用 SSL 登录到 apache 服务器
  2. 阿帕奇发回->
    • header("上下文类型:纯文本");
    • echo "发送请求";
  3. 用户使用 httpwebrequest 从 c#/.net 提交新请求以获取数据
  4. apache以json形式发回数据
  5. 拥有所需数据并乐于继续的用户

我把上面的场景放在 c#/form.timer 中;并且大多数时候它在后台运行平稳,没有噪音。但是,一段时间后(通常是几个小时),第 3 步)失败,总是重定向到登录页面(http 状态 302)。

Apache 服务器和 php 已经过时了(apache 2.2.10 和 php 5.2.xx)。

在 c# 中,httpwebrequest 的设置如下面的代码片段所示。

System.Net.ServicePointManager.Expect100Continue = false;
lrequest = (HttpWebRequest)WebRequest.Create(tmp_url);
lrequest.CookieContainer = ThisAddIn.getCookieContainer();
lrequest.KeepAlive = true;
lrequest.AllowAutoRedirect = false;
lrequest.Method = "POST";
lrequest.ContentType = "application/x-www-form-urlencoded";
lrequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 9.0; MSIE 8.0; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; MAAU; InfoPath.2; .NET CLR 1.1.4322; MS-RTC LM 8; .NET4.0C; .NET4.0E; OfficeLiveConnector.1.5; OfficeLivePatch.1.3)";
int tmp_len = dbyte.Length;
lrequest.ContentLength = tmp_len;
Stream dstream = lrequest.GetRequestStream();
dstream.Write = (dbyte,0,tmp_len);
dstream.Close();
lresponse = (HttpWebResponse)lrequest.GetResponse();
dstream = lresponse.GetResponseStream();
reader = new StreamReader(dstream);
rdata = reader.ReadToEnd();
reader.Close();
dstream.Close();
lresponse.Close();
4

0 回答 0