I wrote the following service:
namespace WebService1 { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] public class Service1 : System.Web.Services.WebService { [WebMethod] public string Test(string str) { if (string.IsNullOrEmpty(str)) throw new SoapException("message", SoapException.ClientFaultCode); else return str; } } }
And the basic application for checking it (one button calls the Test method on a click event):
private void button1_Click(object sender, EventArgs e) { ServiceReference1.Service1SoapClient ws = new WindowsFormsApplication1.ServiceReference1.Service1SoapClient(); try { ws.Test(""); } catch (SoapException ex) {
I would like to catch the SoapException thrown by my WebService, but I always go to the catch FaultException block, getting this as a message:
System.Web.Services.Protocols.SoapException: message in WebService1.Service1.Test (String str) in [...] WebService1 \ WebService1 \ Service1.asmx.cs: line 25
How can I catch a real SoapException and not a FaultException ? Something I missed in the WebService?
c # exception try-catch asmx
Sharpac
source share