CommunicationException 类

定义

表示服务或客户端应用程序中的通信错误。Represents a communication error in either the service or client application.

public ref class CommunicationException : Exception
public ref class CommunicationException : SystemException
public class CommunicationException : Exception
[System.Serializable]
public class CommunicationException : SystemException
type CommunicationException = class
    inherit Exception
type CommunicationException = class
    inherit SystemException
Public Class CommunicationException
Inherits Exception
Public Class CommunicationException
Inherits SystemException
继承
CommunicationException
继承
CommunicationException
派生
属性

示例

下面的代码示例演示处理 CommunicationException 类型的客户端。The following code example shows a client that handles CommunicationException types. 此客户端也处理 FaultException 对象,因为服务的 IncludeExceptionDetailInFaults 已设置为 trueThis client also handles FaultException objects because the service has IncludeExceptionDetailInFaults set to true.

using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using Microsoft.WCF.Documentation;

public class Client
{
  public static void Main()
  {
    // Picks up configuration from the configuration file.
    SampleServiceClient wcfClient = new SampleServiceClient();
    try
    {
      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClient.SampleMethod(greeting));
      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      wcfClient.Abort();
      Console.ReadLine();
    }
    // Catch the contractually specified SOAP fault raised here as an exception.
    catch (FaultException<GreetingFault> greetingFault)
    {
      Console.WriteLine(greetingFault.Detail.Message);
      Console.Read();
      wcfClient.Abort();
    }
    // Catch unrecognized faults. This handler receives exceptions thrown by WCF
    // services when ServiceDebugBehavior.IncludeExceptionDetailInFaults
    // is set to true.
    catch (FaultException faultEx)
    {
      Console.WriteLine("An unknown exception was received. "
        + faultEx.Message
        + faultEx.StackTrace
      );
      Console.Read();
      wcfClient.Abort();
    }
    // Standard communication fault handler.
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message + commProblem.StackTrace);
      Console.Read();
      wcfClient.Abort();
    }
  }
}

Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports Microsoft.WCF.Documentation

Public Class Client
  Public Shared Sub Main()
    ' Picks up configuration from the configuration file.
    Dim wcfClient As New SampleServiceClient()
    Try
      ' Making calls.
      Console.WriteLine("Enter the greeting to send: ")
      Dim greeting As String = Console.ReadLine()
      Console.WriteLine("The service responded: " & wcfClient.SampleMethod(greeting))
      Console.WriteLine("Press ENTER to exit:")
      Console.ReadLine()
    Catch timeProblem As TimeoutException
      Console.WriteLine("The service operation timed out. " & timeProblem.Message)
      wcfClient.Abort()
      Console.ReadLine()
    ' Catch the contractually specified SOAP fault raised here as an exception.
    Catch greetingFault As FaultException(Of GreetingFault)
      Console.WriteLine(greetingFault.Detail.Message)
      Console.Read()
      wcfClient.Abort()
    ' Catch unrecognized faults. This handler receives exceptions thrown by WCF
    ' services when ServiceDebugBehavior.IncludeExceptionDetailInFaults 
    ' is set to true.
    Catch faultEx As FaultException
      Console.WriteLine("An unknown exception was received. " & faultEx.Message + faultEx.StackTrace)
      Console.Read()
      wcfClient.Abort()
    ' Standard communication fault handler.
    Catch commProblem As CommunicationException
      Console.WriteLine("There was a communication problem. " & commProblem.Message + commProblem.StackTrace)
      Console.Read()
      wcfClient.Abort()
    End Try
  End Sub
End Class

注解

可靠的客户端和服务 Windows Communication Foundation (WCF)应用程序处理在通信过程中可能引发的 CommunicationException 对象。Robust client and service Windows Communication Foundation (WCF) applications handle CommunicationException objects that may be thrown during communication. 有两个客户端通常也会预计到的 CommunicationException 派生的异常类型(FaultException<TDetail>FaultException)。There are also two CommunicationException-derived exception types (FaultException<TDetail> and FaultException) that clients also often expect. 因此,为了防止一般 CommunicationException 处理程序捕获到这些更具体的异常类型,请在处理 CommunicationException 之前捕获这些异常。Therefore, in order to prevent the generic CommunicationException handler from catching these more specific exception types, catch these exceptions prior to handling CommunicationException.

当侦听器接收到操作协定中不需要或未指定的 SOAP 错误时,将引发 FaultException 对象。FaultException objects are thrown when a listener receives a SOAP fault that is not expected or specified in the operation contract. 通常,如果在调试应用程序时将服务的 IncludeExceptionDetailInFaults 属性设置为 true,就会发生这一情况。This usually occurs when the application is being debugged and the service has the IncludeExceptionDetailInFaults property set to true.

备注

实现自定义通道和绑定元素时,强烈建议您的组件只引发 System.TimeoutExceptionCommunicationException 派生的对象。When implementing custom channels and binding elements, it is strongly recommended that your components throw only System.TimeoutException or CommunicationException-derived objects. 如果您的组件引发了此组件特定的可恢复异常,则将在 CommunicationException 对象内包装该异常。In the case where your components throw a recoverable exception that is specific to the component, wrap that exception inside a CommunicationException object.

有关设计和使用 WCF 故障系统的详细信息,请参阅在协定和服务中指定和处理错误For more details about designing and using the WCF fault system, see Specifying and Handling Faults in Contracts and Services.

重要

WCF 运行时将不会引发在其离开 WCF 运行时并输入用户代码的位置不安全的 CommunicationExceptionThe WCF Runtime will not throw a CommunicationException that is unsafe to handle at the point where it leaves the WCF Runtime and enters user code.

构造函数

CommunicationException()

初始化 CommunicationException 类的新实例。Initializes a new instance of the CommunicationException class.

CommunicationException(SerializationInfo, StreamingContext)

使用指定的序列化信息和上下文对象初始化 CommunicationException 类的新实例。Initializes a new instance of the CommunicationException class, using the specified serialization information and context objects.

CommunicationException(String)

使用指定的消息初始化 CommunicationException 类的新实例。Initializes a new instance of the CommunicationException class, using the specified message.

CommunicationException(String, Exception)

使用指定的消息和内部异常初始化 CommunicationException 类的新实例。Initializes a new instance of the CommunicationException class, using the specified message and the inner exception.

属性

Data

获取键/值对的集合,这些键/值对提供有关该异常的其他用户定义信息。Gets a collection of key/value pairs that provide additional user-defined information about the exception.

(继承自 Exception)
HelpLink

获取或设置指向与此异常关联的帮助文件链接。Gets or sets a link to the help file associated with this exception.

(继承自 Exception)
HResult

获取或设置 HRESULT(一个分配给特定异常的编码数字值)。Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.

(继承自 Exception)
InnerException

获取导致当前异常的 Exception 实例。Gets the Exception instance that caused the current exception.

(继承自 Exception)
Message

获取描述当前异常的消息。Gets a message that describes the current exception.

(继承自 Exception)
Source

获取或设置导致错误的应用程序或对象的名称。Gets or sets the name of the application or the object that causes the error.

(继承自 Exception)
StackTrace

获取调用堆栈上的即时框架字符串表示形式。Gets a string representation of the immediate frames on the call stack.

(继承自 Exception)
TargetSite

获取引发当前异常的方法。Gets the method that throws the current exception.

(继承自 Exception)

方法

Equals(Object)

确定指定的对象是否等于当前对象。Determines whether the specified object is equal to the current object.

(继承自 Object)
GetBaseException()

当在派生类中重写时,返回 Exception,它是一个或多个并发的异常的根本原因。When overridden in a derived class, returns the Exception that is the root cause of one or more subsequent exceptions.

(继承自 Exception)
GetHashCode()

作为默认哈希函数。Serves as the default hash function.

(继承自 Object)
GetObjectData(SerializationInfo, StreamingContext)

当在派生类中重写时,用关于异常的信息设置 SerializationInfoWhen overridden in a derived class, sets the SerializationInfo with information about the exception.

(继承自 Exception)
GetType()

获取当前实例的运行时类型。Gets the runtime type of the current instance.

(继承自 Exception)
MemberwiseClone()

创建当前 Object 的浅表副本。Creates a shallow copy of the current Object.

(继承自 Object)
ToString()

创建并返回当前异常的字符串表示形式。Creates and returns a string representation of the current exception.

(继承自 Exception)

事件

SerializeObjectState

当异常被序列化用来创建包含有关该异常的徐列出数据的异常状态对象时会出现该问题。Occurs when an exception is serialized to create an exception state object that contains serialized data about the exception.

(继承自 Exception)

适用于