如何配置 WCF 以支持故障契约,其中主机和客户端都在使用 net.pipe 的同一进程中?

2024-01-03

我正在尝试使用 net.pipe 绑定为我的服务与客户端交互创建一个进程内单元测试。与良好的 WCF 服务一样,它在服务操作上使用FaultContractAttribute 来公开可能的错误(包装异常)到元数据。我想通过 XML 配置客户端和服务端点(应用程序配置)。然而,每当抛出错误时,它只是一个 CommunicationException“管道已关闭”,而不是我期望的类型错误。

System.ServiceModel.CommunicationException: There was an error reading from the pipe: The pipe has been ended. (109, 0x6d). 

我尝试为 net.pipe 添加 IMetadataExchange 端点,但这不起作用。我也尝试过。在 Vista 上,需要我对 http 端点的 ACL 进行 netsh 操作。那也行不通。

自定义异常类:

public class ValidationException : ApplicationException { }

这是配置的最新尝试,但它输出了“在服务实现的合约列表中找不到合约名称‘IMetadataExchange’”

任何有关如何完成此操作的示例或建议的链接将不胜感激。

<system.serviceModel>

  <client>
    <endpoint name="Client"
              contract="IService"
              address="net.pipe://localhost/ServiceTest/"
              binding="netNamedPipeBinding"
              bindingConfiguration="netPipeBindingConfig" />
  </client>

  <services>
    <service
      name="Service"
      behaviorConfiguration="ServiceFaults">
      <host>
        <baseAddresses>
          <add baseAddress="net.pipe://localhost/ServiceTest/"/>
          <add baseAddress="http://localhost/ServiceTest/"/>
        </baseAddresses>
      </host>
      <endpoint
        address=""
        binding="netNamedPipeBinding"
        bindingConfiguration="netPipeBindingConfig"

        name="ServicePipe"
        contract="IService" />
      <endpoint
        address="MEX"
        binding="mexNamedPipeBinding"
        bindingConfiguration="mexNetPipeBindingConfig"
        name="MexUserServicePipe"
        contract="IMetadataExchange" />
    </service>
  </services>

  <bindings>
    <netNamedPipeBinding>
      <binding name="netPipeBindingConfig"
               closeTimeout="00:30:00"
               sendTimeout="00:30:00" />
    </netNamedPipeBinding>
    <mexNamedPipeBinding>
      <binding name="mexNetPipeBindingConfig"></binding>
    </mexNamedPipeBinding>
  </bindings>

  <behaviors>
    <serviceBehaviors>
      <behavior name="ServiceFaults">
        <serviceDebug includeExceptionDetailInFaults="true"/>
      </behavior>
      <behavior name="MEX">
        <serviceMetadata 
          httpGetEnabled="true"
          httpGetUrl="http://localhost/ServiceTest/MEX"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>

</system.serviceModel>

如果您上面描述的 ValidationException 类是您用于处理错误的类,那么它可能是问题的根源。您应该从FaultException 派生错误异常,因为它是可序列化的。 ApplicationException 不是。

Wagner 是对的,您需要用一个FaultContract 属性来装饰您的操作定义,并赋予它您的合约类型。您还应该使用 DataContract 和 DataMember 属性来装饰您的FaultContract。

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

如何配置 WCF 以支持故障契约,其中主机和客户端都在使用 net.pipe 的同一进程中? 的相关文章

  • WCF 数据服务错误处理

    我创建了一个带有服务操作的WCF数据服务 我想生成一种业务异常 我尝试生成WebFaultException但我不知道当服务操作抛出此错误时如何在客户端捕获此错误 这是我模拟异常的服务操作 WebGet public void Genera
  • 从 OperationContext 获取 SOAP 标头中的值

    我有以下代码C 寻找一个apiKey在下面的SOAP header SOAP 标头
  • 如何对 SQL Server 中的数据库进行单元测试?

    有哪些方法呢 您可以使用哪些框架 好吧 我想你的意思是对访问数据库的代码进行单元测试 在这种情况下 有NDbUnit http www ndbunit org 它似乎是 NET 的 DbUnit 克隆 我从来没有使用过它 但是我使用过DbU
  • Xcode 5:单元测试未运行

    我创建了一些测试用例 它们都通过了 那是因为它们没有被运行 从 Xcode 中 我得到 Test Suite All tests started at Test Suite All tests finished at Executed 0
  • 需要帮助理解这段代码

    我正在尝试学习单元测试 我正在尝试对我在 asp net mvc 1 0 中制作的一些会员资格内容进行单元测试 我一直在关注一本关于 MVC 的书 我对一些东西感到困惑 希望有人能为我解答 我的框架使用 Nunit 和 Moq 问题一 pu
  • 如何通过 mat-dialog-close 或其他方式对 MatDialog 是否关闭进行单元测试

    我有一个简单的组件 它将显示为对话框窗口垫对话框 https material angular io components dialog overview 在该组件的模板中 一个按钮标记为垫子对话框关闭 https material ang
  • 如何在 Visual Studio 中运行单个测试或特定文件夹中的所有测试?

    因此 我将从带有 ReSharper 的 Visual Studio 2015 迁移到 Visual Studio 2017 并尝试从我的工作流程中删除 ReSharper 我知道 CTRL R T 运行整个 TestClass 或所有测试
  • Android:使用 Robolectric 和 Mockito 对 Android 应用程序进行单元测试

    我有一个 Java 库 它使用了 Android API 中的一些东西 我想使用 Mockito 为这个库编写单元测试 我有办法解决这个问题吗 Mockito 在 Dalvik VM 上运行不佳 请参阅这篇文章 将 Mockito 与 An
  • 如何在要测试的 React 组件内模拟自定义钩子?

    如果您有一个调用获取数据的自定义挂钩的 React 组件 那么在测试 React 组件时模拟内部自定义挂钩结果的最佳方法是什么 我看到两种主要方法 1 Jest mock 自定义钩子 这似乎是最推荐的方法 但它似乎要求测试对内部实现细节以及
  • 如何让 Mockito 在 androidTest 中工作

    在我的测试中 我如何模拟我编写的课程 这是我的测试代码 import android support test runner AndroidJUnit4 import org junit Before import org junit Te
  • Swift 单元测试 - 如何断言 CGColor 是它应该的样子?

    使用 Xcode V7 2 尝试进行单元测试 需要验证是否已设置正确的颜色 并收到以下消息 Cannot invoke XCTAssertEqual with an argument list of type CGColor CGColor
  • RxJava android mvp 单元测试 NullPointerException

    我是 mvp 单元测试的新手 我想对演示者进行一个非常基本的测试 它负责登录 我只想断言 view onLoginSuccess 这是演示者代码 public LoginPresenter LoginViewContract loginVi
  • 使用元表中的多个条目的 Compex MySQL 左连接

    我正在尝试创建一个查询来从主表 WordPress 用户表 和用户元表中获取信息 如果您不熟悉 WP DB 架构 wp users 保存基本用户信息及其 ID wp usermeta 保存 ID meta key 和 meta value
  • 有状态 WCF Web 服务

    我是 WCF 新手 我一直在尝试在 Web 服务中使用会话状态 我设法使用number http www codeproject com KB session SessionWithWS aspx msg 3227646 of http w
  • 在 Linux 中使用 Python 读取 EXE、MSI 和 ZIP 文件元数据

    我正在编写一个 Python 脚本 将大量 Windows 安装程序索引到数据库中 我想知道如何使用在 Linux 上运行的 Python 从 EXE MSI 和 ZIP 文件中读取元数据信息 公司 产品名称 版本等 Software 我在
  • Spring boot:单元测试和配置文件

    我正在对休息控制器进行单元测试 这只是更大应用程序的一小部分 我的应用程序无法识别我的测试上下文 并且出现以下异常 java lang IllegalStateException 无法加载ApplicationContext 这是我的测试课
  • pydev 断点不起作用

    我正在使用 python 2 7 2 sqlalchemy 0 7 unittest eclipse 3 7 2 和 pydev 2 4 开发一个项目 我在 python 文件 单元测 试文件 中设置断点 但它们被完全忽略 之前 在某些时候
  • 选择MySql表数据放入数组中

    我尝试从 mysql 捕获数据并将它们全部放入数组中 认为 users table id name code 1 gorge 2132 2 flix ksd02 3 jasmen skaod2 sql mysql query select
  • XCode:代码覆盖率数据生成失败

    当我尝试运行单元测试时 我在 Objective C 项目中遇到了这个可怕的问题 我已经尝试了以下所有方法 根据各种 SOF 帖子 清除派生数据 删除 Library 中的所有模拟器设置 重新启动 XCode 重新启动MBP 多次重置模拟器
  • 使用 Spring 时实例化对象,用于测试与生产

    使用 Spring 时 应该使用 Spring 配置 xml 来实例化生产对象 并在测试时直接实例化对象 这样的理解是否正确 Eg MyMain java package org world hello import org springf

随机推荐

  • JS Analytics 电子商务回调

    我找不到任何地方如何使用hitCallback谷歌分析参数ecommerce send 在文档中 它唯一的例子是send pageview 这是我尝试过的代码 ga ecommerce send hitCallback function w
  • 在 python 中使用多个参数进行日志记录

    在 python 日志记录模块中 日志的格式如下 formatter logging Formatter asctime s name s levelname s message s simple example py applicatio
  • 为什么 Angular Guards canActivate 方法总是返回 false?

    我在登录后对用户进行基本身份验证 但发生了奇怪的行为 canActivate 返回 false 即使它是在正确的时间调用的 in 登录组件 private login this authService login this loginFor
  • 加载目录中的所有图像

    我的目录中有某些图像 我想加载所有这些图像来进行一些处理 我尝试使用load功能 imagefiles dir F SIFT Yantao demo data jpg nfiles length imagefiles Number of f
  • 单一资源的 Rails 嵌套路由

    我在单一资源上有一个嵌套路线 map resource account controller gt users do page page resources feeds end 我正在尝试制作一个表单来添加提要 我从这个开始 undefin
  • 一个 EC2 实例下的多个 WordPress 多站点 (AWS)

    我们正在尝试为一个 EC2 实例下的多站点配置 DNS 路由 具体来说 我们正在设置 WordPress 多站点的开发 测试和 UAT 环境 我们在这个网络上只有 2 个站点 主站点和一个网站 现在 我已成功将生产站点 在不同的 EC2 实
  • 在 Qt GUI 事件线程中检测到“我正在运行”

    我有这个功能来更新一些 GUI 的东西 void SavedConnections renderList Do GUI stuff Must run in Qt thread 我需要确保该函数不会从其他线程调用 我打算做的是将其推迟到事件循
  • Firebase 规则:如何阻止匿名访问?

    阅读 Firebase 规则文档 https firebase google com docs storage security 我找不到任何有关如何阻止匿名访问特定集合或文档的信息 换句话说 我想阻止未登录的用户 也想阻止以匿名身份登录的
  • 如何在反射中迭代列表

    我有一个名为 Students 的属性 其类型为List
  • 如何在 SBCL/Common Lisp 中与进程输入/输出交互

    我有一个文本文件 每行一个句子 我想使用 hunspell s 选项 对每行中的世界进行词形还原 由于我想分别获得每行的引理 因此将整个文本文件提交给 hunspell 是没有意义的 我确实需要一行接一行地发送 并为每一行提供 hunspe
  • 如何判断单词是否连续重复两次

    例如 我在 MySQL 数据库表字段中有以下段落 当地球介于天文物体之间时 天文物体的照明被切断 例如月食 这里这个词 object 连续出现两次 彼此相邻 我想检查这种情况是否出现在同一个表的其他记录中 有没有一种简单的方法可以使用 PH
  • 以编程方式设置 Segue 标识符

    假设我有一个带有文本字段和按钮的 ViewController 我想使用展开转场 以便在单击按钮后我可以将文本字段的信息获取到我的其他视图控制器 我想使用PrepareForSegue方法 这样我就可以在 展开 之前将文本字段中的文本保存在
  • 无法使用 FluentEmail 发送电子邮件中的嵌入图像

    我在用着流利的电子邮件 https github com lukencode FluentEmail在 ASP NET core 2 0 类库中 它将发送电子邮件通知 下面是我到目前为止尝试过的示例代码 using FluentEmail
  • 使用毕加索强制重新下载图像

    我正在创建一个应用程序 它将从特定的 url 下载图像并将其显示在 ImageView 上 服务器会随着时间的推移更改此图像 但 url 保持不变 所以我想实现这样的逻辑 当应用程序旋转或重新打开时 从应用程序缓存加载图像 当用户点击下载按
  • 未捕获错误:断言失败:尝试使用已在使用的 id 注册视图:名称

    我随机开始收到此错误Uncaught Error Assertion Failed Attempted to register a view with an id already in use name在我的应用程序上使用 ember cl
  • 如何在多行文本框中不断滚动到文本末尾? [复制]

    这个问题在这里已经有答案了 我正在使用计时器用文本更新我的文本框 每次计时器滴答作响时 我都会被重定向到多行文本框中键入的文本的开头 这个怎么做 我想说 当您刷新时 您可以将选择光标移动到末尾 然后使用 ScrollToCaret 滚动文本
  • Redis中的数据目录在哪里?

    将一些数据写入 Redis 服务器后 我可以从客户端读取数据 但是 如何找到文件系统上的数据目录呢 最快的方法 使用redis cli redis cli config get dir 如果您配置了身份验证 则需要在使用中传递该身份验证 a
  • Parsley 2.x 和 Bootstrap 3 错误消息范围的错误放置

    我正在尝试将欧芹验证添加到 Bootstrap 3 btn group 中包含的一组单选按钮 问题是欧芹注入的错误包装器 在我的例子中设置为跨度 出现在两个选项之间 包含在标签内 而不是出现在 btn group div 之外 下面的示例对
  • 不安全的 JavaScript 尝试访问带有 URL 的框架:域、协议和端口必须匹配。

    我试图通过调用来设置应用程序的高度 FB init appId fbAppId status true cookie true xfbml true oauth true channelURL webUrl channel html FB
  • 如何配置 WCF 以支持故障契约,其中主机和客户端都在使用 net.pipe 的同一进程中?

    我正在尝试使用 net pipe 绑定为我的服务与客户端交互创建一个进程内单元测试 与良好的 WCF 服务一样 它在服务操作上使用FaultContractAttribute 来公开可能的错误 包装异常 到元数据 我想通过 XML 配置客户