【发布时间】:2015-07-06 12:39:50
【问题描述】:
有没有办法强制 WCF 主机出错? (更具体地说,基于 REST 的 WCF 主机。) 是否存在可以引发主机故障的异常类型? 如果一个异常不能让主机进入故障状态,有什么办法呢?
在下面的“Api_Root”函数中,我抛出了几种不同类型的异常,它们要么被异常处理程序捕获,要么导致整个过程失败(OutOfMemoryException)。
一些示例代码。它在 VB 中,但任何 C# 帮助也将不胜感激。
<ServiceContract(Name:="API", NameSpace:="urn:test")>
Public Interface IWebServiceApi
<OperationContract()>
<WebGet(UriTemplate:="GetObject")>
Function Api_Root() As Object
End Interface
<ServiceBehavior(InstanceContextMode:=InstanceContextMode.PerCall, IncludeExceptionDetailInFaults:=True)>
Public Class WebServiceApi
Implements IWebServiceApi
Public Function Api_Root() As Object Implements IWebServiceApi.Api_Root
//Throw Exception type that causes the Host to Fail
Return New Object()
End Function
End Class
Function StartService()
_Service = New WebServiceHost(GetType(WebServiceApi), baseAddresses)
_Service.Open()
AddHandler _Service.Opened, AddressOf Me.Opened
AddHandler _Service.Closed, AddressOf Me.Closed
AddHandler _Service.Faulted, AddressOf Me.Faulted
End Function
Sub Faulted(sender As Object, e As EventArgs)
//Handle the falted service here
End Sub
【问题讨论】:
-
你试过抛出错误异常吗?这些链接可能感兴趣:stackoverflow.com/questions/315736/… 和 stackoverflow.com/questions/8181903/…
-
@EdmundYeung99 抛出
FaultException或从它派生的类是不让您的客户端进入故障状态的唯一方法. OP 希望 他的 host 连接进入故障状态。