服务操作的详细异常

本文关键字:异常 操作 服务 | 更新日期: 2023-09-27 18:30:49

我正在使用C#来构建服务操作。当出现问题时,我想抛出一个可能被捕获客户端的异常。

但是,当引发异常时,客户端只能收到一般错误,如"400:错误请求",并且异常消息无法访问。

在我的服务操作中,我启用了以下详细错误:

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
and
config.useVerboseErrors = true;

我还解压缩了 TargetInvocationException,而是使用以下函数返回一个 DataServiceException:

    protected override void HandleException(HandleExceptionArgs args)
    {
        // Handle exceptions raised in service operations.
        if (args.Exception.GetType() == typeof(TargetInvocationException)
            && args.Exception.InnerException != null)
        {
            if (args.Exception.InnerException.GetType() == typeof(DataServiceException))
            {
                // Unpack the DataServiceException.
                args.UseVerboseErrors = true;
                args.Exception = args.Exception.InnerException as DataServiceException;
            }
            else
            {
                // Return a new DataServiceException as "400: bad request."
                args.UseVerboseErrors = true;
                args.Exception = new DataServiceException(400, args.Exception.InnerException.Message);
            }
        }
    }
当我

使用浏览器时,我可以看到详细的异常消息,但是当我以编程方式尝试时,内部异常为 null,我只看到一般错误消息"400:错误请求"。

奇怪的是,如果我返回代码 200 而不是 400,我可以在答案正文中看到异常消息。但显然我不想这样做。

那么,当您

从服务操作中抛出异常时,有没有办法获取异常消息客户端?

服务操作的详细异常

你看过端到端跟踪吗?此外,此 MSDN 页面并不像最初看起来那么令人生畏,我认为"发生异常时提供其他信息"部分对您很有用。祝您阅读愉快。