Tôi có một hoạt động dịch vụ web đơn giản như thế này:Làm thế nào để trích xuất ngoại lệ bên trong từ một ngoại lệ xà phòng trong ASP.NET?
[WebMethod]
public string HelloWorld()
{
throw new Exception("HelloWorldException");
return "Hello World";
}
Và sau đó tôi có một ứng dụng client mà tiêu thụ các dịch vụ web và sau đó gọi các hoạt động. Rõ ràng là nó sẽ ném một ngoại lệ :-)
try
{
hwservicens.Service1 service1 = new hwservicens.Service1();
service1.HelloWorld();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
Trong khối catch, những gì tôi muốn làm là trích xuất thông điệp ngoại lệ thực sự để sử dụng nó trong mã của tôi. Trường hợp ngoại lệ bị bắt là một SoapException
, đó là tốt, nhưng nó Message
tài sản là như thế này ...
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Exception: HelloWorldException
at WebService1.Service1.HelloWorld() in C:\svnroot\Vordur\WebService1\Service1.asmx.cs:line 27
--- End of inner exception stack trace ---
... và InnerException
là null
.
Điều tôi muốn làm là trích xuất thuộc tính Message
của InnerException
(văn bản HelloWorldException
trong mẫu của tôi), bất kỳ ai có thể trợ giúp điều đó không? Nếu bạn có thể tránh nó, vui lòng không đề xuất phân tích thuộc tính Message
của số SoapException
.
Tại sao tạo lớp tùy chỉnh nếu bạn có thể đạt được nó mà không có? Vui lòng xem lại câu trả lời của tôi trên bài đăng này. – BornToCode