我写了以下服务:
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;
}
}
}
以及一个测试它的基本应用程序(一个按钮Test
在点击事件上调用该方法):
private void button1_Click(object sender, EventArgs e)
{
ServiceReference1.Service1SoapClient ws = new WindowsFormsApplication1.ServiceReference1.Service1SoapClient();
try
{
ws.Test("");
}
catch (SoapException ex)
{
//I never go here
}
catch (FaultException ex)
{
//always go there
}
catch (Exception ex)
{
}
}
我想捕捉SoapException
我的 WebService 抛出的问题,但我总是去FaultException
catch 块获取它作为消息:
System.Web.Services.Protocols.SoapException:[...]WebService1\WebService1\Service1.asmx.cs:line 25 中 WebService1.Service1.Test(String str) 处的消息
我怎么能抓住一个真正的SoapException
,而不是一个FaultException
?WebService 中有什么我想念的吗?