标签: webexception

System.Net.WebException HTTP状态代码

是否有一种简单的方法来获取HTTP状态代码System.Net.WebException

c# http-status-codes webexception

145
推荐指数
5
解决办法
9万
查看次数

WebException如何获取整体响应?

在WebException中,我看不到GetResponse的主体.这是我在C#中的代码:

try {                
  return GetResponse(url + "." + ext.ToString(), method, headers, bodyParams);
} catch (WebException ex) {
    switch (ex.Status) {
      case WebExceptionStatus.ConnectFailure:
         throw new ConnectionException();                        
     case WebExceptionStatus.Timeout:
         throw new RequestTimeRanOutException();                     
     case WebExceptionStatus.NameResolutionFailure:
         throw new ConnectionException();                        
     case WebExceptionStatus.ProtocolError:
          if (ex.Message == "The remote server returned an error: (401) unauthorized.") {
              throw new CredentialsOrPortalException();
          }
          throw new ProtocolErrorExecption();                    
     default:
          throw;
    }
Run Code Online (Sandbox Code Playgroud)

我看到头但我看不到身体.这是Wireshark输出的请求:

POST /api/1.0/authentication.json HTTP/1.1    
Content-Type: application/x-www-form-urlencoded    
Accept: application/json    
Host: nbm21tm1.teamlab.com    
Content-Length: 49    
Connection: Keep-Alive    

userName=XXX&password=YYYHTTP/1.1 500 Server error    
Cache-Control: private, max-age=0 …
Run Code Online (Sandbox Code Playgroud)

c# webexception

101
推荐指数
3
解决办法
8万
查看次数

正确处理两个WebException

我正在努力处理两种不同WebException的问题.

基本上他们在打电话后处理 WebClient.DownloadFile(string address, string fileName)

AFAIK,到目前为止我必须处理两个,两个WebException:

  • 无法解析远程名称(即没有网络连接访问服务器下载文件)
  • (404)文件不正确(即服务器上不存在该文件)

可能会有更多,但这是我迄今为止发现最重要的内容.

那么我应该如何处理这个问题,因为它们都是,WebException但我想以不同的方式处理每个案例.

这是我到目前为止:

try
{
    using (var client = new WebClient())
    {
        client.DownloadFile("...");
    }
}
catch(InvalidOperationException ioEx)
{
    if (ioEx is WebException)
    {
        if (ioEx.Message.Contains("404")
        {
            //handle 404
        }
        if (ioEx.Message.Contains("remote name could not")
        {
            //handle file doesn't exist
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在检查消息以查看它是什么类型的WebException.我会假设有更好或更精确的方法来做到这一点?

谢谢

c# webclient exception-handling downloadfile webexception

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

底层连接已关闭:接收时发生意外错误

我在这里是因为我在通过ftp协议下载一些文件时遇到问题.这很奇怪,因为它偶尔发生,甚至对于同一个文件也是如此.

只是一个精度:我正在下载非常大的文件(从500 Mo到30Go)

以下是我的函数返回的异常类型:(抱歉,这是法语)

System.Net.WebException: La connexion sous-jacente a été fermée : Une erreur inattendue s'est produite lors de la réception. à System.Net.FtpWebRequest.CheckError() à System.Net.FtpWebRequest.SyncRequestCallback(Object obj) à System.IO.Stream.Close() à System.Net.ConnectionPool.Destroy(PooledStream pooledStream) à System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse) à System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage) à System.Net.FtpWebRequest.SyncRequestCallback(Object obj) à System.Net.CommandStream.Abort(Exception e) à System.Net.CommandStream.CheckContinuePipeline() à System.Net.FtpDataStream.System.Net.ICloseEx.CloseEx(CloseExState closeState) à System.Net.FtpDataStream.Dispose(Boolean disposing) à System.IO.Stream.Close() à UtilityClasses.FTP.Download(String srcDirectoryPath, String file, String destDirectoryPath)

以下是用于下载的代码:

下载方法:

public Dictionary<string, object> Download(string srcDirectoryPath, string file, string destDirectoryPath, int attemptLimitNb, int …
Run Code Online (Sandbox Code Playgroud)

.net c# connection webexception

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

在WebException错误中获取错误号

如何在WebException错误中获取错误号?

try
{
     HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create("site");
     HttpWebResponse response = (HttpWebResponse)request.GetResponse();
     Stream stream = response.GetResponseStream();
     int i = stream.ReadByte();
}
catch (WebException e)
{
     //How To Get Error number in WebException Error?
}
Run Code Online (Sandbox Code Playgroud)

c# webexception

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

HttpRequestException vs WebException

这是一个我很困惑的一般性问题.我认为一旦发出REST请求,就会通过一个错误返回错误WebException.在一个案例中,我得到了一个HttpRequestException,这不允许我获取HTTP状态代码.

我对这些东西不熟悉,但这些之间的区别是什么?为什么有两种类型?什么时候使用而不是另一个?

WebException似乎运作良好.HttpRequestException它似乎是一个非常弱的版本,它知道状态代码(在它的消息中),但它不会明确告诉我它是什么.

编辑: 我正在使用HttpClient.专门打电话client.GetStreamAsync().

c# rest webexception dotnet-httpclient

14
推荐指数
2
解决办法
8151
查看次数

System.UriFormatException:无效的URI:无法解析主机名

突然间,我的网站上出现以下错误.它不访问数据库.它只是一个使用.NET 2.0的简单网站.

我最近做了应用可用的Windows Server 2003 Service Pack.这会改变一切吗?

我应该补充一点,这个错误是随机出现的,并且已经在今天和昨天这样做了.我离开它5分钟,错误消失了.

'/'应用程序中的服务器错误.

无效的URI:无法解析主机名.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

例外细节:

System.UriFormatException:无效的URI:无法解析主机名.

来源错误:

在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

堆栈跟踪:

[UriFormatException:无效的URI:无法解析主机名.]
System.Uri.CreateThis(String uri,Boolean dontEscape,UriKind uriKind)+5367536 System.Uri.CreateUri(Uri baseUri,String relativeUri,Boolean dontEscape)+31 System. Uri..ctor(Uri baseUri,String relativeUri)+34 System.Net.HttpWebRequest.CheckResubmit(Exception&e)+5300867

[WebException:无法处理从HTTP/HTTPS协议到其他不同协议的重定向.] System.Net.HttpWebRequest.GetResponse()+5314029 System.Xml.XmlDownloadManager.GetNonFileStream(Uri uri,ICredentials凭据)+69
System.Xml.XmlDownloadManager. GetStream(Uri uri,ICredentials凭证)+3929371 System.Xml.XmlUrlResolver.GetEntity(Uri absoluteUri,String role,Type ofObjectToReturn)+54
System.Xml.XmlTextReaderImpl.OpenUrlDelegate(Object xmlResolver)+74
System.Threading.CompressedStack.runTryCode( Object userData)+70
System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code,CleanupCode backoutCode,Object userData)+0
System.Threading.CompressedStack.Run(CompressedStack compressedStack,ContextCallback callback,Object state)+108
System.Xml.XmlTextReaderImpl .OpenUrl()+ 186
System.Xml.XmlTextReaderImpl.Read()+208
System.Xml.XmlLoader.Load(XmlDocument doc,XmlReader reader,Boolean preserveWhitespace)+112 System.Xml.XmlDocument.Load(Xm lReader reader)+108
System.Web.UI.WebControls.XmlDataSource.PopulateXmlDocument(XmlDocument document,CacheDependency&dataCacheDependency,CacheDependency&transformCacheDependency)+303
System.Web.UI.WebControls.XmlDataSource.GetXmlDocument()+ 155
System.Web.UI.WebControls .XmlDataSourceView.ExecuteSelect(DataSourceSelectArguments arguments)+29 System.Web.UI.WebControls.BaseDataList.GetData()+39 System.Web.UI.WebControls.DataList.CreateControlHierarchy(Boolean useDataSource)+264
System.Web.UI.WebControls. BaseDataList.OnDataBinding(EventArgs e)+55 System.Web.UI.WebControls.BaseDataList.DataBind()+ 75
System.Web.UI.WebControls.BaseDataList.EnsureDataBound()+55 …

.net webexception

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

有没有办法在400/500状态代码上更改HttpWebRequest行为?

我正致力于在.NET 中的HttpWebRequest/ HttpWebResponsetypes 之上构建一个流畅的REST客户端界面.到目前为止,这么好......但是我正在尝试开发一个可插拔的安全框架,它可以自动处理安全令牌协商,令牌刷新等.

由于HttpWebRequest/Response遇到400系列或500系列HTTP状态代码时的工作性质,我遇到了问题.他们不是简单地设置.StatusCode.StatusDescription属性,而是允许你以任何你想要的方式处理它们WebException.一般来说,这可能不是问题...但是我们验证的方式(OAuth 2.0的派生),我需要处理某些400系列错误而不会发生异常.

有没有办法将HttpWebRequest/Response重新配置为NOT throw WebException,并允许消费者确定自己的错误处理?我知道有一些关于使用旧的Http1.0服务器处理Expect-100-Continue的方法......我很好奇是否有类似的循环方式来禁用WebExceptions.

(哦,只是无法抗拒......在RedGate上为了我非常好的朋友非法抢走反映器6的许可证免费版本......我可能能够解决这个问题如果我可以窥探代码,我自己......但是......反射器很遗憾地是一个不可行的选择,因为它已经通过自溶来消耗它.; P)

httpwebrequest webexception custom-error-handling

7
推荐指数
1
解决办法
1873
查看次数

当状态不是200时,如何从Web请求中读取响应?

当我收到Web异常时,我很难从vb.net中的HTTP Web请求获取响应文本.

这是我正在做的代码.

Try
            myWebResponse = CType(request.GetResponse(), HttpWebResponse)
            myStreamReader = New StreamReader(myWebResponse.GetResponseStream())

            ResponseText = myStreamReader.ReadToEnd
            If myWebResponse.StatusCode = HttpStatusCode.Accepted Or myWebResponse.StatusCode = 200 Then
                SendResult = True 'Sent 
                SendStatus = 1 'message sent successfully
                Try
                    Integer.TryParse(myWebResponse.Headers("Number-Of-MT-PDU"), num_MT_PDU)
                Catch ex As Exception
                End Try
            Else
                SendStatus = 2 'message processed but not sent successfully
            End If
        Catch e As WebException
            If (e.Status = WebExceptionStatus.ProtocolError) Then
                Dim response As WebResponse = e.Response
                Using (response)
                    Dim httpResponse As HttpWebResponse = CType(response, HttpWebResponse)
                    statusCode …
Run Code Online (Sandbox Code Playgroud)

vb.net webexception

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

WebException.Response.GetResponseStream()应该关闭/处理吗?

当我抓到.NET时WebException,我应该关闭/处理Response.GetResponseStream()

MSDN示例不会关闭或异常处理任何事情.

许多SO 答案建议处理响应和/或流.

我处理了流,这引起了很大的问题.因为GetResponseStream()(总是?/有时?)返回相同的实例.因此,当我获得响应流然后处理它时,可能会将异常重新抛出到另一个层,该层也会获得响应流,它将被处理掉并且不可读并因此而抛出更多异常.

.net c# idisposable httpwebresponse webexception

7
推荐指数
2
解决办法
1473
查看次数