Mam klasyczny serwis WWW asp.net (asmx) i metodę sieciową. Muszę rzucić niestandardowy wyjątek dla niektórych przypadków w mojej metodzie internetowej i muszę złapać ten wyjątek niestandardowy, gdy wołam metodę usługi sieciowej.Złapanie niestandardowego wyjątku zgłoszonego przez WebMethod na ASP.NET WebService
[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);
}
}
}
wejściowe, wyjściowe i wyjątków klas jako próbka:
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) { }
}
Na stronie klienta, muszę:
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
}
}
Niestety, nie mogę tego zrobić, bo po dodaniu odwołanie do usługi WWW na kliencie, mam klasy usługi, klasy wejścia i wyjścia, ale nie mam niestandardowej klasy wyjątków.
także inny problem jest to, że mam też problemy z szeregowania klasę Exception (ze względu na własności Exception.Data implementuje interfejsu IDictionary)
Czy istnieje sposób, aby zrobić to na swój sposób, czy jestem w zupełnie w niewłaściwy sposób, czy jest coś, czego mi brakuje na temat podstaw usług internetowych?
Dzięki.
Musisz ustawić tryb customErrors = "RemoteOnly" lub "On" w swojej sieci.config – eddy