Fangen Sie eine benutzerdefinierte Ausnahme, die ausgelöst durch eine WebMethod auf ASP.NET WebService

Ich habe eine klassische asp.net web service (asmx) und einer web-Methode. Ich brauche zu werfen, eine benutzerdefinierte Ausnahme für einen Fall in meinem web-Methode, und ich brauche, um zu fangen, dass spezifische benutzerdefinierte Ausnahme, wo ich den Aufruf der web service Methode.

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class WebService : System.Web.Services.WebService
{
    [WebMethod]
    public HelloWorldOutput HelloWorld(HelloWorldInput input)
    {
        try
        {
            //My Code
            return new HelloWorldOutput();
        }
        catch (Exception ex)
        {
            throw new HelloWorldException("Hello World Exception", ex);
        }
    }
}

Input -, output-und exception-Klassen ein Beispiel:

public class HelloWorldInput { }
public class HelloWorldOutput { }    

[Serializable]
public class HelloWorldException : Exception
{
    public HelloWorldException() { }
    public HelloWorldException(string message) : base(message) { }
    public HelloWorldException(string message, Exception inner) 
        : base(message, inner) { }
    protected HelloWorldException(
      System.Runtime.Serialization.SerializationInfo info,
      System.Runtime.Serialization.StreamingContext context)
        : base(info, context) { }
}

In der client-Seite, die ich brauche:

public static void Main()
{
    WebService service = new WebService();
    try
    {
        service.HelloWorld(new HelloWorldInput());
    }
    catch (HelloWorldException ex)
    {
        //Do sth with HelloWorldException
    }
    catch (Exception ex)
    {
        //Do sth with Exception
    }
}

Kann ich jedoch nicht tun, weil, wenn ich die web service Referenz im client, ich habe die service-Klasse, input-und output-Klassen, aber ich habe keine eigene exception-Klasse.

Auch ein weiteres problem ist, ich habe auch Probleme mit dem serialisieren Exception-Klasse (wegen der Ausnahme.Data-Eigenschaft implementiert IDictionary-Schnittstelle)

Gibt es eine Möglichkeit, dies zu tun, auf meine Weise, oder ich bin in einer völlig falschen Weg, oder gibt es etwas, was ich vermisse über die Grundlagen von web-services?

Dank.

Schreibe einen Kommentar