me escribió el siguiente servicio:La captura de un SoapException lanzada por un servicio web
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;
}
}
}
Y una aplicación básica para probarlo (un botón de llamada al método Test
el evento de clic):
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)
{
}
}
I me gustaría atrapar el SoapException
lanzado por mi WebService, pero siempre voy al FaultException
catch bloque a get that as message:
System.Web.Services.Protocols.SoapException: Mensaje de en WebService1.Service1.Test (String str) en [...] WebService1 \ WebService1 \ Service1.asmx.cs: Línea 25
Cómo podría Cojo un SoapException
real, y no un FaultException
? ¿Hay algo que extraño en el servicio web?
-1: no es necesario usar tecnología antigua en el cliente solo porque se usa tecnología antigua en el servidor. –
Cierto, ciertamente no es necesario. Sin embargo, mezclar WCF y ASMX es una forma segura de meterse en un montón de problemas. ¿Tuviste una mejor solución? Si es así, estoy seguro de que Sharpac estaría interesado en escucharlo, y yo también ... – CodingInsomnia
Gracias CodingInsomnia that's works! Finalmente atrapo una SoapException. – Sharpac