SoapServerException.HandleException()

本文关键字:HandleException SoapServerException | 更新日期: 2023-09-27 18:00:13

我对这个方法实际上是如何处理传递给它的异常感到困惑,它似乎没有做任何额外的事情。

我把它放在代码的一段中,因为它是我前几天看的一个示例中使用的标准,但后来我发现它似乎吞噬了我的Exception消息,所以我只剩下没有InnerException的通用SoapServerException

// "Exception of type 'Microsoft.SharePoint.SoapServer.SoapServerException' was thrown."
catch (Exception ex)
{
    throw SoapServerException.HandleException(exception);
}
// "Server was unable to process request. ---> Error in MyService.asmx ---> 
// Could not load file or assembly 'That.Assembly.I.Forgot' or one of its dependencies."
catch (Exception ex)
{
    throw new Exception("Error in MyService.asmx", ex);
}

我应该抛出SoapServerException.HandleException()而不是我自己更具描述性的异常,这有什么原因吗?

SoapServerException.HandleException()

根据:http://msdn.microsoft.com/en-us/library/gg552614(v=office.14).aspx#最佳实践_信息光盘

出于安全原因,SoapServerException.HandleException()旨在减少返回给用户的详细信息。所以这种行为是故意的。

此方法的文档:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.soapserver.soapserverexception.handleexception.aspx

并没有真正解释这种方法的作用,这很不幸。如果您有意向用户提供更多详细信息,那么您应该使用自己的异常。但在提供这些细节时要小心。出于安全考虑,这可能不是一个好主意。这实际上取决于你对发送错误的一方的信任程度。

-Dave