Man*_*ish 11 c# asp.net-mvc web-services asp.net-web-api
我有一个问题:
连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应URL.
我也遇到了这样的问题:
System.IO.IOException:无法将数据写入传输连接:远程主机强制关闭现有连接
和
System.Net.WebException:操作已在System.Net.WebClient.UploadFile超时(Uri地址,String方法,String fileName)
我知道这个问题之前已经问过了,但是相信我,我几乎尝试过每一个问题.
奇怪的是这个问题根本没有出现在我的最后,只有当客户试图使用哪个不是常数时.有一段时间我的应用程序也在他们的最后工作正常
我想要完成的是我创建了一个桌面应用程序(Win Forms&C#)并尝试登录客户端,同时向我的php api服务器发送请求,该服务器托管在GODaddy上.
var request = (HttpWebRequest)WebRequest.Create("url");
if (request != null)
{
#region System.Net.WebException
request.Method = "POST";
if (!string.IsNullOrEmpty(body))
{
var requestBody = Encoding.UTF8.GetBytes(body);
request.ContentLength = requestBody.Length;
request.ContentType = "application/json";
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(requestBody, 0, requestBody.Length);
}
}
else
{
request.ContentLength = 0;
}
request.Timeout = 15000;
request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache);
string output = string.Empty;
try
{
using (var response = (HttpWebResponse)request.GetResponse())
{
using (var stream = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(1252)))
{
if (response.StatusCode == HttpStatusCode.OK)
{
while (!stream.EndOfStream)
{
output += stream.ReadLine();
}
output = stream.ReadToEnd();
}
}
}
}
catch
{
// Excaption Caught here
}
}
Run Code Online (Sandbox Code Playgroud)
请帮帮我.
提前致谢.
尝试添加这个...
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.ServicePoint.ConnectionLimit = 12;
Run Code Online (Sandbox Code Playgroud)
MSDN 文章建议每个 CPU 有 12 个连接,因此限制为 12,因为它是由 GoDaddy 托管的,所以我确信服务器资源是有限的。