Jus*_*anz 9 c# web-services exception-handling asmx
我有一个Web服务,我在其中创建了一个自定义异常.假设此异常的名称是InvalidContractException.
我想要做的是,如果发生特定步骤,我想抛出此异常.但是,我无法弄清楚客户端如何捕获InvalidContractException以便正确处理它.
这是一个用C#编写的ASP.Net Web服务
Joh*_*ers 17
你不能这样做:
ASMX Web服务没有对SOAP Faults的适当支持.除了客户端的SoapException之外,无法获得任何异常.
升级到WCF的另一个原因.
作为ASMX 无法做到的一个例子,这里是WCF的工作原理.WCF允许您为每个Web服务操作指定它可以返回哪些错误:
[ServiceContract]
public interface IMyServiceContract
{
[FaultContract(typeof(IntegerZeroFault))]
[FaultContract(typeof(SomeOtherFault))]
[OperationContract]
public string GetSomeString(int someInteger);
}
[DataContract]
public class IntegerZeroFault
{
[DataMember]
public string WhichInteger {get;set;}
}
[DataContract]
public class SomeOtherFault
{
[DataMember]
public string ErrorMessage {get;set;}
}
public class MyService : IMyServiceContract
{
public string GetSomeString(int someInteger)
{
if (someInteger == 0)
throw new FaultException<IntegerZeroFault>(
new IntegerZeroFault{WhichInteger="someInteger"});
if (someInteger != 42)
throw new FaultException<SomeOtherFault>(
new SomeOtherFault{ErrorMessage ="That's not the anaswer"});
return "Don't panic";
}
}
Run Code Online (Sandbox Code Playgroud)
例如,WCF客户端可以捕获FaultException<SomeOtherFault>
.当我使用Java客户端尝试这个时,它能够捕获SomeOtherFault
IBM Rational Web Developer创建的派生自Java Exception
类的内容.
归档时间: |
|
查看次数: |
10020 次 |
最近记录: |