WCF 错误处理

2024-01-16

Q如何在客户端获取原始异常(发生在服务器上)?

我正在使用自托管 WCF 服务和 C# 4,并尝试设置适当的异常处理。

我有一个看起来像这样的客户

private ServiceResponse PerformRemoteAction(ServiceRequest request, ProcessOperations operation)
{
    ...    
    try
    {
        //remote call
        switch (operation)
        {
            ...
            case ProcessOperations.VerifyAction: { response = client.VerifyAction(request); break; } 

            default: throw new NotImplementedException();
        }
    }
    catch (Exception ex)
    {
        AppManager.LogException(ex);
    }

    return response;
}

及服务实施

public override ServiceResponse VerifyAction(ServiceRequest request)
{
    RegisterRequest(request);

    try
    {
        var chain = new VerificationChain();
        Responce = chain.Run(request);
    }
    catch (Exception ex)
    {
        throw new FaultException<WcfException>(ExceptionFactory.Create(ex),
            new FaultReason(ex.Message));
    }

    SetSuccessfulResponce();

    return Responce;
}

服务 web.config 有

<behaviors>
    <serviceBehaviors>
        <behavior>
            <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
    </serviceBehaviors>
</behaviors>

This is my original exception enter image description here

And this is what I get on the cliententer image description here

如果需要,我可以在客户端发布完整的详细信息,但是客户端上的异常没有任何对原始异常的引用。

Update
这是我定义的界面故障契约属性

[ServiceContract]
public interface IServiceOperation : IOperation
{
    ...
    [OperationContract(Action = "http://tempuri.org/ITestRunnerService/VerifyAction", ReplyAction = "http://tempuri.org/ITestRunnerService/VerifyAction")]
    [FaultContractAttribute(typeof(WcfException), Action = "http://tempuri.org/ITestRunnerService/ExecuteRequestWcfExceptionFault", Name = "WcfException", Namespace = "http://schemas.datacontract.org/2004/07/TH.Core.Exceptions")]
    ServiceResponse VerifyAction(ServiceRequest request);
}

这是我的Wcf异常 class

[DataContract]
public class WcfException : Exception
{
    [DataMember]
    public string Title { get; set; }

    [DataMember]
    public new string Message { get; set; }

    [DataMember]
    public new string InnerException { get; set; }

    [DataMember]
    public new string StackTrace { get; set; }
}

您是否尝试过捕获FaultException?

catch (FaultException<WcfException> ex)
{
   AppManager.LogException(ex);
}
catch (FaultException unknownFault)
{
   AppManager.LogException(unknownFault);
}

您将需要包括一个故障契约属性 http://msdn.microsoft.com/en-us/library/system.servicemodel.faultcontractattribute.aspx在您的合同中,以使其发挥作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF 错误处理 的相关文章

  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • 在实体框架拦截器中向 DbScanExpression 添加内部联接

    我正在尝试使用实体框架 CommandTree 拦截器通过 DbContext 向每个查询添加过滤器 为了简单起见 我有两个表 一个称为 User 有两列 UserId 和 EmailAddress 另一个称为 TenantUser 有两列
  • 如何保证对象只有一个线程

    我有以下代码 class Service public void start creates thread which creates window and goes to message loop void stop sends WM C
  • 如何在 C# / .NET 中创建内存泄漏[重复]

    这个问题在这里已经有答案了 可能的重复 托管代码中是否可能存在内存泄漏 特别是 C 3 0 https stackoverflow com questions 6436620 is it possible to have a memory
  • 平滑滚动.net 表单

    您好 我正在 net 中使用表单 并且在运行时动态添加大量链接标签 我将这些链接标签添加到面板并将该面板添加到 winform 当链接标签的数量增加时 表单会显示一个自动滚动条 垂直 现在 当我使用自动滚动向下滚动时 表单在滚动时不会更新其
  • 我如何在 C# .NET(win7 手机)中使用“DataContractJsonSerializer”读入“嵌套”Json 文件?

    我有一个问题 如果我的 json 文件看起来像这样 Numbers 45387 Words 空间桶 我可以很好地阅读它 但是如果它看起来像这样 Main Numbers 45387 Words 空间桶 某事 数字 12345 单词 克兰斯基
  • 读取 C# 中的默认应用程序设置

    我的自定义网格控件有许多应用程序设置 在用户范围内 其中大部分是颜色设置 我有一个表单 用户可以在其中自定义这些颜色 并且我想添加一个用于恢复默认颜色设置的按钮 如何读取默认设置 例如 我有一个名为的用户设置CellBackgroundCo
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 如何在 SqlDataReader.Read() 期间从死锁异常中恢复

    我的 NET 应用程序的事件日志显示 它在从 Sql Server 读取数据时偶尔会出现死锁 这种情况通常非常罕见 因为我们已经优化了查询以避免死锁 但有时仍然会发生 过去 我们在调用ExecuteReader函数在我们的SqlComman
  • 动态生成的控件 ID 返回为 NULL

    我可以在 Page PreInit 函数中创建动态控件 如何检索控件及其 ID 我的 C 代码用于创建动态控件之一 var btn new WebForms Button btn Text btn ID Addmore btn Click
  • WCF - AsyncPattern=true 或 IsOneWay=true

    我的 WCF 服务中很少有方法需要花费大量时间 生成报告和发送电子邮件 根据目前的要求 要求客户端应用程序只需提交请求 然后不等待整个过程完成 它将允许用户继续在客户端应用程序中执行其他操作 而不是等待整个过程完成 我很困惑该走哪条路 As
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • 矩阵到数组 C#

    这将是转换方阵的最有效方法 例如 1 2 3 4 5 6 7 8 9 into 1 2 3 4 5 6 7 8 9 in c 我在做 int array2D new int 1 2 3 4 5 6 7 8 9 int array1D new
  • 将 char[][] 转换为 char** 会导致段错误吗?

    好吧 我的 C 有点生疏了 但我想我应该用 C 来做我的下一个 小 项目 这样我就可以对其进行抛光 并且我已经有不到 20 行的段错误了 这是我的完整代码 define ROWS 4 define COLS 4 char main map
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo

随机推荐

  • 使用pointinterval减少点数

    With pointinterval 可以告诉 Gnuplot 何时在线上插入点 现在 通过将其设置为 1 线不会穿过该点 例如 pi 1 lt gt lt gt lt gt lt gt lt gt lt gt lt gt lt gt lt
  • SonarQube 分析成功,但服务器未处理

    我最近将 SonarQube 服务器从 5 1 2 升级到 5 2 我们通过 Jenkins 使用 SonarQube Runner 2 4 运行分析 并且分析成功 问题是服务器不会处理分析 在针对失败的后台任务显示的日志末尾可以看到以下错
  • 使用 MessageContract 时,Webservice Response 会变成 ref 参数

    我定义了以下接口 ServiceContract public interface IHealthProducts OperationContract ResponseClass OrderSelfSignedHealthCertifica
  • 机架会话在 Chrome 中丢失

    我有一个非常简单的应用程序 托管在 EC2 上 使用 Sinatra 构建 并在 nginx 后面提供 Thin 服务 问题是 对于 Chrome 会话变量在 Sinatra 中会 丢失 在 Firefox 中不会发生这种情况 这是使用 R
  • 检测 Windows 还是 Linux? [复制]

    这个问题在这里已经有答案了 我正在寻求在 Windows 和 Linux 上运行通用的 Java 程序 该程序需要在每个平台上做一些不同的事情 那么我的 Java 程序如何 应该检测它是在 Linux 下运行还是在 Windows 下运行
  • Firebase 远程配置根据初始请求得出结果

    我正在使用单例从 Firebase 远程配置文件中获取参数 第一次运行应用程序时 我只能从单例中访问默认值 后续运行正确返回配置的值 有什么更好的方法可以做到这一点 以便我可以从新的开始访问这些值 protocol RemoteConfig
  • 如何缩放基于 FFT 的互相关,使其峰值等于 Pearson's rho

    问题描述 FFT 可用于计算两个信号或图像之间的互相关 确定两个信号之间的延迟或滞后A and B 只需定位以下峰值 IFFT FFT A conjugate FFT B 然而 峰值的幅度与各个信号的频谱的幅度相关 从而确定皮尔逊相关系数
  • iOS 应用程序蓝牙音频以“电话模式”出现。

    我有一个 iOS 应用程序 可以生成文本转语音 TTS 音频 AVSpeechSynthesizer 一位用户表示 他的汽车蓝牙扬声器上的音频以 电话模式 大概是拨打或接听电话时的音频 发出 而不是像 Youtube 以及音乐和地图应用程序
  • Google API:获取联系人照片

    通过遵循 API 我已经能够检索除联系人照片之外的所有内容 我可以从返回的 xml 中获取 img url 以及 gd etag 下面是 Google API 示例 这与我得到的结果是一样的 当然对于我的联系人来说 属性值是不同的 问题是我
  • Woocommerce:如何删除结账页面上的产品线?

    就像在购物车中一样 我怎样才能使用 x 链接删除结帐页面中的产品 有什么钩子可以做到这一点吗 thanks 我也遇到了同样的问题 谷歌也没找到解决的方法 所以我自己尝试并找到了这个解决方案 在您的主题中的结帐页面上覆盖 woocommerc
  • 服务引用下的哪些文件属于源代码管理。 (视觉工作室)

    我对 WPF 和 WCF 都很陌生 并且有一个 WPF 应用程序 该应用程序具有对 WCF 应用程序的服务引用 我在 Service References MyService 下创建了各种文件 我不太确定哪些需要进入源代码管理 哪些不需要
  • 跳转到文件而不修改跳转列表

    我正在编写一个类似标签的插件 它应该能够跳转到给定的文件 行和列 I use edit跳转到正确的文件 然后G 跳转到正确的位置 如所解释的here https stackoverflow com a 19195792 110081 我的问
  • 如何实现基于树的QComboBox

    我怎样才能实现QComboBox http qt project org doc qt 5 qcombobox html允许您从树结构中进行选择 类似于QTreeView http qt project org doc qt 5 qtree
  • cx_Freeze 转换的 GUI 应用程序 (tkinter) 在按下绘图按钮后崩溃

    我已经处理这个问题好几天了 希望能找到一些帮助 我开发了一个带有导入模块 tkinter numpy scipy matplotlib 的 GUI 应用程序 它在 python 本身中运行良好 转换为 exe 后 一切都按预期工作 但 ma
  • 博客文章的永久链接结构与 WordPress 中的页面不同?

    我希望帖子的永久链接结构与 WordPress 网站上的页面不同 例如 博客文章名称 这是一篇不错的博客文章 将获得永久链接 博客 这是一篇不错的博客文章 其中名为 提供的服务 的页面将获得永久链接 提供的服务 我知道我应该在永久链接结构中
  • 返回数据库名称==':内存:'或数据库名称中的'模式=内存'类型错误:'PosixPath'类型的参数不可迭代

    我正在 django 中制作一个网络应用程序 我尝试将它部署在 pythonanywhere 上 一切都很顺利 但最后当我尝试使用收集静态文件时python manage py collectstatic它给了我这个错误 return da
  • 当我们将鼠标悬停在元素上并设置其边框时,如何避免晃动?

    当我们将鼠标悬停在元素上并设置其边框时 如何避免晃动 这是我编写的代码示例 http jsfiddle net s3N2h http jsfiddle net s3N2h 有没有什么技巧可以避免晃动呢 假设我将鼠标悬停在文件上 会出现边框
  • git merge 应该忽略一个目录

    我在名为 reports 的目录中有大量数据 在与另一个分支进行 git merge 时 我在 reports 目录下的文件遇到很多冲突 我希望 git merge 忽略报告下的文件 换句话说 我想要来自主报告而不是来自实验室分支的所有数据
  • Makefile 依赖项可重用现有工件来重新制作通用目标

    这可能很简单 但我一直无法找到答案 我正在为嵌入式平台开发一个 gmake 系统 该系统有两个处理元件 每个元件都有自己的固件 称为 CoreA bin 和 CoreB 每个元件都有自己的依赖关系树 CoreB 的 make 系统来自第三方
  • WCF 错误处理

    Q如何在客户端获取原始异常 发生在服务器上 我正在使用自托管 WCF 服务和 C 4 并尝试设置适当的异常处理 我有一个看起来像这样的客户 private ServiceResponse PerformRemoteAction Servic