相关疑难解决方法(0)

Httpwebreqest与Fiddler一起使用On Timeout

我收到一个奇怪的错误.我已经设置了一个脚本,当Fiddler打开时它可以完美地工作 - 它使用httpwebrequest从网站下载报告,一切正常!

然而它只适用于Fiddler开放时?当小提琴手不工作时,我只是得到一个"请求超时问题"

有谁知道如何修复它并使其与我的ASP.NET MVC应用程序一起工作?

谢谢

编辑:感谢您的回复!关于代理 - 我想在Windows Azure上测试这个脚本 - 所以很少混淆如何设置默认代理设置?

.net asp.net-mvc httpwebrequest fiddler

17
推荐指数
2
解决办法
6733
查看次数

两次服务器500错误后,C#HttpWebRequest超时

在我生成两个由于"(500)内部服务器错误500"而引发异常的C#HttpWebRequests之后,第三次尝试抛出超时异常.为什么不抛出另一个(500)内部服务器错误异常?

当我重新启动我的应用程序时,它会抛出两个500错误,然后再次开始超时.

这是我的代码:

GetPages GetPages = new GetPages();
string test = GetPages.GetPage(); /* Exception: (500) Internal Server Error */
GetPages.Dispose();

GetPages GetPages = new GetPages();
string test = GetPages.GetPage();  /* Exception: (500) Internal Server Error */
GetPages.Dispose();

GetPages GetPages = new GetPages();
string test = GetPages.GetPage();  /* Exception: time out, why? */
GetPages.Dispose();
Run Code Online (Sandbox Code Playgroud)

这是GetPages类和GetPage方法:

namespace MyNamespace
{
    class GetPages
    {
        public string GetPage()
        {
            this.httpRequest = (HttpWebRequest)WebRequest.Create("http://myurl");

            try
            {
                StringBuilder postData = new StringBuilder(100);
                postData.Append("test=test");
                byte[] dataArray = Encoding.UTF8.GetBytes(postData.ToString());

                httpRequest.CachePolicy …
Run Code Online (Sandbox Code Playgroud)

c# httpwebrequest

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

HttpWebRequests使用WebProxy工作然后失败

奇怪的情况我在这里,不幸的是我不太了解netstat之外的Windows网络方面:

所以我有一个我在浏览器中配置的代理(Firefox 42),并且正在运行一个简单的应用程序,它通过URL循环以通过该代理调用它们.此代理具有凭据以便使用它,我知道代理工作.这是一个Windows 7的盒子.

因此,在此过程中的某个时刻,会发生以下情况:

  1. 浏览器调用只是超时.它根本不要求凭据.(当问题消失时,它又开始要求提供凭据).
  2. 无论超时是什么(7秒,20秒等),都会在应用程序超时中调用

我已经确认了以下内容:

  1. 在我的.net应用程序中,我100%知道我正在关闭每个网络对象,甚至在我读取响应后中止了请求对象.
  2. 经过一段时间,没有任何电话,问题就消失了.
  3. 当我在另一台服务器上使用此代理时,它100%有效.所以我知道它与我使用的服务器和代理IP地址有关.
  4. 我查看了资源管理器,并没有打开很多活动的TCP连接.虽然我不知道这是否意味着什么.
  5. 如果我使用另一个代理,这个代理工作.这就像它的IP特定,令我感到困惑,因为它只是代码中的Web代理对象.

什么会导致这个?它通常在使用代理进行4-7次调用后发生,并在30-40分钟后释放问题.

编辑7:

AWS实例也会发生这种情况.试过这种方法.ZZZ ...

编辑6:

服务器重启也不会消失.您可以重新启动,15分钟后SAME代理超时.最终再次运作.

编辑5:

用Java和Python写了一个类似的测试.结果相同.

编辑4:这是它的工作原理:

Call to Proxy 1... Good!
Call to Proxy 2... Good!
Call to Proxy 3... Good!
Call to Proxy 4... Good!
Call to Proxy 1... Good!
Call to Proxy 2... Good!
Call to Proxy 3... Good!
Call to Proxy 4... Good!
Call to Proxy 1... Timeout...
Call to Proxy 2... Good!
Call to Proxy 3... Good!
Call to …
Run Code Online (Sandbox Code Playgroud)

.net c# windows proxy tcp

13
推荐指数
1
解决办法
855
查看次数

WebRequest.GetResponse锁定了吗?

写下面的代码时,我的代码会锁定GetResponse.为什么?

        try
        {
            WebRequest myWebRequest = WebRequest.Create(strURL);
            WebResponse myWebResponse = myWebRequest.GetResponse();
            //more code here
Run Code Online (Sandbox Code Playgroud)

.net c# webresponse lockup getresponse

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

"远程主机强行关闭现有连接"来自HttpWebRequest的零星错误

我有一个奇怪的,零星的问题,一个简单的测试应用程序(Visual Studio控制台应用程序),它通过发送简单的http请求和计时响应时间充当托管的aspx网站(而不是应用程序)的监视器.在过去的几个星期里,我已经使用过这个问题了.在白天看似随机的时间,我的http请求开始失败并出现上述错误.它们似乎是超时,因为失败的请求都需要60秒.在如上所述的一段时间的一致错误之后(在一种情况下从几分钟到90分钟的随机时间段),错误停止并且http响应开始返回而没有正常速度的错误(通常约0.25秒).监视程序客户端请求触发一个非常简单的数据库查找,在服务器端只有1-2行代码.

我还可以通过更新主机站点上的任何.cs文件来随意触发此行为,除其他外,这会导致应用程序池回收.我的看门狗应用程序立即开始超时,出现上述错误.

它闻起来像某种循环连接问题,因为如果我只是重新启动看门狗应用程序,它工作正常,响应开始在正常延迟回来.

我已经尝试过设置request.KeepAlive = false和request.ServicePoint.ConnectionLimit = 1,那些没有帮助.

另一个线索,我无法将IIS管理器连接到此服务器上托管的两个不同网站中的任何一个,这一直都运行正常.我试图通过IIS管理器连接"基础连接已关闭".每次.我有一段时间没有更新任何一个网站,所以这不是我的任何改变.

这是在IIS7上运行的后端的asp.net 4网站,在集成管道模式下具有专用的应用程序池.

此外,如果我将监视程序应用程序中的sleeptime变量更改为30秒,则问题不会显示.在我认为10-20秒的范围内有一些神奇的数字,如果请求暂停多于此,它们永远不会失败.

我认为IIS管理器无法连接这一事实很好地证明了我的测试应用程序独立于主机端的问题,但我想在打开支持事件之前覆盖我的基础...特别是因为我的控制台的简单重启应用程序修复问题...至少有一段时间.

class Program
{
            //make a simple web request and just return the status code
    static string SendHttpMsg(string url, string postData)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";
        ASCIIEncoding encoding = new ASCIIEncoding();
        byte[] byte1 = encoding.GetBytes(postData);
        request.ContentLength = byte1.Length;
        //request.KeepAlive = false; //no effect
        //request.ServicePoint.ConnectionLimit = 1; //no effect
        Stream requestStream = request.GetRequestStream();
        requestStream.Write(byte1, 0, byte1.Length);
        requestStream.Close();
        HttpWebResponse response = (HttpWebResponse)request.GetResponse(); …
Run Code Online (Sandbox Code Playgroud)

asp.net

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

HttpWebRequest 超时

我已阅读以下两篇文章并尝试实现相同的内容。

我的代码是这样的,超时发生在这里

HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
wr.ContentType = "multipart/form-data; boundary=" + boundary;
wr.Method = "POST";
wr.KeepAlive = false;
wr.CookieContainer = cookieJar;

wr.Proxy = null;
wr.ServicePoint.ConnectionLeaseTimeout = 5000;
Stream rs = wr.GetRequestStream(); // -> Time out error occurs here
Run Code Online (Sandbox Code Playgroud)

我读过的文章

My code using that as a sample
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
wr.ContentType = "multipart/form-data; boundary=" + boundary;
wr.Method = "POST";
wr.KeepAlive = false;
wr.CookieContainer = cookieJar;

wr.Timeout = 5000;
wr.Proxy = null;

wr.ServicePoint.ConnectionLeaseTimeout = 5000;
wr.ServicePoint.MaxIdleTime = 5000;

Stream rs = …
Run Code Online (Sandbox Code Playgroud)

c# timeout httpwebrequest

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