Tag: system.net.webexception

C#HttpWebRequest.GetResponse – 如何处理非exception与webexception响应的StatusCode用法?

有人可以帮助清除HttpWebResponse和WebException中“StatusCode”属性的用法吗? 例如,似乎如果: a)没有exception,那么HttpWebResponse将有一个StatusCode可以有一些值,表明两者: – 成功(例如OK,Accepted等) – 失败(例如UseProxy,RequestTimeout等) b)有一个WebExeption throw,它本身有一个响应对象,它还有一个StatusCode(我假设它是基于相同的HttpStatusCode枚举)。 问题1 – 在StatusCode将触发WebException的情况下是否存在任何一致性(并且您将在exception中获取详细信息),相比之下没有exception会返回但是您会在StatusCode中找到结果响应对象? 问题2 – 或者更具体地说,尝试处理httpWebRequest.GetResponse调用的pseduo代码(或C#代码本身)是什么,以便您想要区分用户的响应类别: 代理设置/代理问题=>所以可以告诉用户修复代理设置 连接问题/ web-server down =>所以用户意识到这一点 服务器端错误(例如服务器在那里但是处理请求时存在问题 – 例如内容不存在)=>因此用户可以通过网站管理员加薪 成功案例(我认为这不仅仅是OK)=> na(成功案例) 谢谢

请求已中止:请求已取消。 没有解决方案

我们的控制台应用程序每分钟都会向Facebook发送数百个WebRequests(使用多个应用程序和数百个访问令牌)。 现在,他们开始失败并在标题中显示exception消息(“请求已中止:请求已取消”)。 我们在互联网上搜索了几个小时,并尝试了所有可能的解决方案,但没有任何帮助。 这些没有帮助: webRequest.Timeout = 20000; //A request that didn’t get respond within 20 seconds is unacceptable, and we would rather just retry. webRequest.KeepAlive = false; webRequest.ProtocolVersion = HttpVersion.Version10; webRequest.ServicePoint.Expect100Continue = false; 任何人有任何其他想法? 编辑: exception的ToString:System.Net.WebException:请求已中止:请求已取消。 —> System.Net.WebException:请求在System.Net.HttpWebRequest.FindServicePoint(Boolean forceFind)的System.Net.ServicePointManager.FindServicePoint(Uri地址,IWebProxy代理,ProxyChain&chain,HttpAbortDelegate&abortDelegate,Int32&abortState)中被取消。在System.Net.HttpWeb上的System.Net.HttpWebRequest.DoSubmitRequestProcessing(exception和exception)处(exceptionE)—内部exception堆栈跟踪结束—在WebException消息的System.Net.HttpWebRequest.GetResponse()处:请求已中止:请求已取消。 edit2:我们没有达到极限。 我们知道什么时候发生,问题不是那样。 我们已经这样做了两年,这件事在整个过程中只发生了两次。 每个AccessToken我们每分钟只做2-3次请求,Facebook上的限制是600个请求/ accesstoken / ip。 edit3:我想为有这个或类似问题的人添加一个额外的提示:确保你处理你的RequestStream,你的Response和你的ResponseStream对象。

操作之间的差异有超时和(504)网关超时

我在我的应用程序中使用HttpWebRequest ,它在多个线程中检查一些URI。 我得到了多种类型的超时exception。 操作已超时 远程服务器返回错误:(504)网关超时。 他们的细节如下: System.Net.WebException:操作已在System.Net.HttpWebRequest.GetResponse()处于超时时间…… 和 System.Net.WebException:远程服务器返回错误:(504)Gateway Timeout。 在System.Net.HttpWebRequest.GetResponse()at …. 这两者之间有什么不同。 我的function如下: public bool CheckUri(Uri m_url) { try { HttpWebRequest request = HttpWebRequest.Create(m_url) as HttpWebRequest; request.UserAgent = “MyUserAgent”; //For: The underlying connection was closed: An unexpected error occurred on a receive. request.KeepAlive = false; request.ProtocolVersion = HttpVersion.Version10; request.Method = “HEAD”; //Get only the […]

HttpWebRequest.GetResponse() – 哪些特定的状态代码会引发exception?

我一直在寻找一些关于此的明确文件,但没有找到任何运气。 基本上 – 问题是 – 从服务器返回的HTTP状态代码将HttpWebRequest.GetResponse()在执行类似的事情之后生成WebException吗? 具体来说 – 它会为状态200以外的任何其他内容生成WebException吗? 或者它只会生成一个WebException,例如400,404和500(为了参数)。 我想知道,因为我正在与之通信的服务器定义除了HTTP 200之外的其他任何东西作为错误条件返回 – 关键是,我可以依赖为200以外的任何其他东西生成WebException吗? (我现在编写了我的代码,以便它实际上每次检查返回状态代码以确保它是200 OK,如果不是,请采取适当的措施 – 但它之间有很多重复,以及WebException的catch块,我希望能把它清理干净……) 任何与文档相关的链接都将非常受欢迎。 谢谢!

System.Net.HttpWebResponse.GetResponseStream()在WebException中返回截断的主体

出于某些原因,我不了解对特定网站( https://learningnetwork.cisco.com/people/mrollins?view=profile )的请求会产生一个reqsponse对象,其响应流包含网站的主干版本。 流在65536字节之后结束,等于2 ^ 16字节。 我认为这是一个可疑的数字。 这些请求抱怨内部服务器错误,我对此表示赞同,因为我已经validation了webbrowsers能够理解这个响应,并且完整的html包含在服务器的响应中。 (使用提琴手 ) 我已经发现此前记录的问题,由于它在本说明中结束的简单原因,这是不能令人满意的: “我想我不得不希望错误不超过65536个字符……” 它确实如此。 解决方法很受欢迎,或者如果有人知道一个好的修复也很好。 using System; using System.IO; using System.Net; using System.Web.UI; namespace Example { public partial class _Default : Page { protected void Page_Load(object senderHidden, EventArgs eHidden) { //ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; }; var cookieContainer […]

服务器返回一个地址以响应PASV命令,该命令与进行FTP连接的地址不同

System.Net.WebException:服务器返回一个地址以响应PASV命令,该命令与进行FTP连接的地址不同。 在System.Net.FtpWebRequest.CheckError() 在System.Net.FtpWebRequest.SyncRequestCallback(Object obj) 在System.Net.CommandStream.Abort(例外e) 在System.Net.FtpWebRequest.FinishRequestStage(RequestStage阶段) 在System.Net.FtpWebRequest.GetRequestStream() 在D:\ PROJEKTI \ BackupDB \ BackupDB \ Program.cs中的BackupDB.Program.FTPUploadFile(String serverPath,String serverFile,FileInfo LocalFile,NetworkCredential Cred):第119行 码: FTPMakeDir(new Uri(serverPath + “/”), Cred); FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverPath+serverFile); request.UsePassive = true; request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = Cred; byte[] buffer = new byte[10240]; // Read/write 10kb using (FileStream sourceStream = new FileStream( LocalFile.ToString(), FileMode.Open)) { […]

HttpWebrequest失败,内部exceptionvalidation失败,因为远程方已关闭传输流

使用C#,。Net 4.5,我试图通过远程服务器上的HttpWebRequest发送Web请求。 请参阅下面的代码。 我尝试了一些论坛建议的大部分解决方案,但我总是遇到同样的错误。 请参阅下面的堆栈跟踪。 调用request.GetReponse()方法时抛出错误。 其他信息,基本上,我正在尝试调用安装在远程服务器上的vmware的vCenter组件的reloadSslCertificatefunction。 目前,该错误仅发生在vCenter 5.5上。 它在5.1及以下版本中运行良好。 var uri = String.Format(“https://{0}/some_url”, serverName); var request = (HttpWebRequest)WebRequest.Create(uri); request.KeepAlive = true; request.Accept = “text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”; request.Headers.Set(HttpRequestHeader.AcceptLanguage, “en-US,en;q=0.8”); request.Credentials = credential; request.CookieContainer = cookieContainer; var response = request.GetResponse(); exception:System.Net.WebException:基础连接已关闭:发送时发生意外错误。 —> System.IO.IOException:身份validation失败,因为远程方已关闭传输流。 System.Net.Security.SslState.Ss上的System.Net.Security.SslState.StartReadFrame(Byte []缓冲区,Int32 readBytes,AsyncProtocolRequest asyncRequest)中的System.Net.Security.SslState.StartReceiveBlob(Byte []缓冲区,AsyncProtocolRequest asyncRequest)。 System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst,Byte [] buffer,AsyncProtocolRequest)上的System.Net.Security.SslState.StartSendBlob(Byte []传入,Int32计数,AsyncProtocolRequest asyncRequest)中的CheckCompletionBeforeNextReceive(ProtocolToken消息,AsyncProtocolRequest asyncRequest) asyncRequest)在System.Net.Se.SlsStream.CallProcessAuthentication(对象状态)的System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)处于System.Threading.ExecutionContext.RunInternal(ExecutionContext […]

通过SSL发送带有HttpWebRequest的请求时出现错误502(错误网关)

我在经典ASP中有以下代码段,用于发送命令并通过SSL检索响应: Dim xmlHTTP Set xmlHTTP = Server.CreateObject(“Msxml2.ServerXMLHTTP.3.0”) xmlHTTP.open “POST”, “https://www.example.com”, False xmlHTTP.setRequestHeader “Content-Type”,”application/x-www-form-urlencoded” xmlHTTP.setRequestHeader “Content-Length”, Len(postData) xmlHTTP.Send postData If xmlHTTP.status = 200 And Len(message) > 0 And Not Err Then Print xmlHTTP.responseText End If 然后我使用此代码作为参考,在c#中重新实现请求: private static string SendRequest(string url, string postdata) { WebRequest rqst = HttpWebRequest.Create(url); // We have a proxy on the domain, […]

C#System.Net.WebException:底层连接已关闭:发送时发生意外错误

我只在一台运行Windows Server 2003的服务器上收到此错误: System.Net.WebException: 基础连接已关闭:发送时发生意外错误。 这是我的代码……有什么想法吗? HttpWebRequest request = (HttpWebRequest)WebRequest.Create(“https:// URL HERE “); //request.Headers.Add(“Accept”, “application/xml”); byte[] bytes; bytes = System.Text.Encoding.ASCII.GetBytes(xml); request.KeepAlive = false; request.Accept = “application/xml”; request.ContentType = “application/xml; charset=’UTF-8′”; request.ContentLength = bytes.Length; request.Method = “POST”; request.Timeout = 10000; request.ServicePoint.Expect100Continue = false;

System.Net.WebException:无法解析远程名称:

我正在测试一个端点,我遇到了一些问题。 我只是在一个循环中使用HttpClient ,每小时执行一次请求。 var httpClient = new HttpClient(); var message = httpClient.GetAsync(url).Result; Console.WriteLine(message.StatusCode); 有一段时间我得到这个例外: System.Net.Http.HttpRequestException:发送请求时发生错误。 —> System.Net.WebException:无法解析远程名称:’xxx’ 经验是在exception之后,可以访问URL。 在浏览器中,您只需刷新页面即可。 我仍然没有得到用户体验它的任何报告,所以我想知道这是否只是一个本地问题,但可以使用一些信息来帮助诊断。 有没有办法检查无法解析远程名称是由DNS问题还是由例外的Web服务器问题引起的? 我可以从HttpCLient获取更多信息,还是需要更高级的诊断工具?