我正在尝试使用SSL和基本身份验证在我的HTTPS中执行基本的FaultException。 问题是当接收到异常时,客户端会收到WebException错误...而不是像预期的那样发生FaultException。
我也在我的服务中覆盖了一个部分,不确定它是否重要。我试图捕获的异常是在MyServiceAuthorizationManager类中。
<serviceBehaviors>
<behavior name="SecureRESTSvcTestBehavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceAuthorization serviceAuthorizationManagerType="EngineAppServiceV001.MyServiceAuthorizationManager, EngineAppServiceV001"/>
这是我的IService1.cs
[DataContract]
public class ServiceData
{
[DataMember]
public bool Result { get; set; }
[DataMember]
public string ErrorMessage { get; set; }
[DataMember]
public string ErrorDetails { get; set; }
}here
这是我的MyServiceAuthorizationManager中的错误部分,它正确地命中
myServiceData.Result = true;
myServiceData.ErrorMessage = "this is user error message";
myServiceData.ErrorDetails = "user error details";
throw new FaultException<ServiceData>(myServiceData, "user reason error");
任何想法为什么它总是作为网络例外在客户端收到?
这是我在客户端上尝试和接收的方式
catch (FaultException<ServiceData> ex)
{
var x1 = ex;
}
以下是我的IService1.cs
[ServiceContract] public interface IService1 { [OperationContract] [FaultContract(typeof(ServiceData))] [WebGet(UriTemplate = "/Login", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)] DataSet Login();
现在我试着像这样定义错误......
[OperationContract]
[FaultContract(typeof(MyExceptionContainer),Action ="",Name = "MyExceptionContainer", Namespace = "EngineAppServiceV001")]
//[FaultContract(typeof(MyExceptionContainer))]
[WebGet(UriTemplate = "/Login",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest)]
DataSet Login();
仍然无法正常工作...附上错误信息图片