gpt4 book ai didi

.net - 如何从 ASP.NET 中的soap异常中提取内部异常?

转载 作者:行者123 更新时间:2023-12-03 20:49:58 33 4
gpt4 key购买 nike

我有一个简单的 Web 服务操作,如下所示:

    [WebMethod]
public string HelloWorld()
{
throw new Exception("HelloWorldException");
return "Hello World";
}

然后我有一个客户端应用程序,它使用 Web 服务然后调用操作。显然它会抛出异常:-)
    try
{
hwservicens.Service1 service1 = new hwservicens.Service1();
service1.HelloWorld();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}

在我的 catch-block 中,我想做的是提取实际异常的 Message 以在我的代码中使用它。捕获的异常是 SoapException ,这很好,但它是 Message属性是这样的……
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 ---

...和 ​​ InnerExceptionnull .

我想做的是提取 Message InnerException 的属性(property)(我示例中的 HelloWorldException 文本),有人可以帮忙吗?如果可以避免,请不要建议解析 Message SoapException 的属性(property).

最佳答案

不幸的是,我认为这是不可能的。

您在 Web 服务代码中引发的异常被编码为 Soap Fault,然后作为字符串传递回您的客户端代码。

您在 SoapException 消息中看到的只是来自 Soap 故障的文本,它不会被转换回异常,而只是作为文本存储。

如果您想在错误情况下返回有用的信息,那么我建议从您的 Web 服务返回一个自定义类,该类可以具有包含您的信息的“错误”属性。

[WebMethod]
public ResponseClass HelloWorld()
{
ResponseClass c = new ResponseClass();
try
{
throw new Exception("Exception Text");
// The following would be returned on a success
c.WasError = false;
c.ReturnValue = "Hello World";
}
catch(Exception e)
{
c.WasError = true;
c.ErrorMessage = e.Message;
return c;
}
}

关于.net - 如何从 ASP.NET 中的soap异常中提取内部异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32058/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com