WCF 中的 mexTcpBinding - IMetadataExchange 错误

2023-11-26

我想让 WCF-over-TCP 服务正常工作。我在修改自己的项目时遇到了一些问题,因此我想从 VS2008 中包含的“基本”WCF 模板开始。

这是初始的 WCF App.config,当我运行该服务时,WCF 测试客户端可以正常使用它:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <compilation debug="true" />
    </system.web>
    <system.serviceModel>
        <services>
            <service name="WcfTcpTest.Service1" behaviorConfiguration="WcfTcpTest.Service1Behavior">
                <host>
                    <baseAddresses>
                        <add baseAddress="http://localhost:8731/Design_Time_Addresses/WcfTcpTest/Service1/" />
                    </baseAddresses>
                </host>
                <endpoint address="" binding="wsHttpBinding" contract="WcfTcpTest.IService1">
                    <identity>
                        <dns value="localhost"/>
                    </identity>
                </endpoint>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="WcfTcpTest.Service1Behavior">
                    <serviceMetadata httpGetEnabled="True"/>
                    <serviceDebug includeExceptionDetailInFaults="True" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
</configuration>

这工作完美,没有任何问题。

我认为将其从 HTTP 更改为 TCP 会很简单:将绑定更改为 TCP 等效项并删除 httpGetEnabled serviceMetadata 元素:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <compilation debug="true" />
    </system.web>
    <system.serviceModel>
        <services>
            <service name="WcfTcpTest.Service1" behaviorConfiguration="WcfTcpTest.Service1Behavior">
                <host>
                    <baseAddresses>
                        <add baseAddress="net.tcp://localhost:1337/Service1/" />
                    </baseAddresses>
                </host>
                <endpoint address="" binding="netTcpBinding" contract="WcfTcpTest.IService1">
                    <identity>
                        <dns value="localhost"/>
                    </identity>
                </endpoint>
                <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/>
            </service>
        </services>
        <behaviors>
            <serviceBehaviors>
                <behavior name="WcfTcpTest.Service1Behavior">
                    <serviceDebug includeExceptionDetailInFaults="True" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
    </system.serviceModel>
</configuration>

但是当我运行此命令时,我在 WCF 服务主机中收到此错误:

System.InvalidOperationException:在服务 Service1 实现的合约列表中找不到合约名称“IMetadataExchange”。将 ServiceMetadataBehavior 添加到配置文件或直接添加到 ServiceHost 以启用对此合约的支持。

我感觉你不能使用 TCP 发送元数据,但就是这样,为什么有 mexTcpBinding 选项?


好吧,如果您想要元数据 - TCP 或 HTTP - 您仍然需要包含serviceMetadata行为!

<behaviors>
    <serviceBehaviors>
        <behavior name="WcfTcpTest.Service1Behavior">
            <serviceDebug includeExceptionDetailInFaults="True" />
            <serviceMetadata />
        </behavior>
    </serviceBehaviors>
</behaviors>

当然,您不能在其上添加“HttpGetEnabled” - 但行为本身必须存在才能启用元数据交换(因此IMetadataExchange合同)。

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

WCF 中的 mexTcpBinding - IMetadataExchange 错误 的相关文章

随机推荐

  • JPA ManyToMany,JoinTable怎么会有属性?

    我有一个关于EJB中ManyToMany设计的问题 jointable如何拥有属性 举个例子 学生和课程都是ManyToMany 每个学生有很多门课程 很多学生选择一门课程 Entity public class Student imple
  • 聚焦时更改 mat-select-arrow 和 mat-select-underline

    到目前为止 我已经尝试了很多不同的事情 例如 deep mat select focus mat select trigger mat select arrow color 63961C deep mat select focus mat
  • 平滑这个 jQuery 切换动画吗?

    所制作的动画我的 jQuery 函数不稳定 我一直在寻找不同的 SO 解决方案 例如添加 jquery easing 但没有运气 问题是每个 div 中的 iframe 吗 关于如何平滑动画有什么想法吗 我的基本切换功能是最好的方法吗 JS
  • Codeigniter 4 - 如何显示404页面?

    这是一个非常愚蠢的问题 但我无法处理它 在 Codeigniter 3 中 我只是在任何控制器中使用 show 404 函数来显示 404 页面 我怎样才能用 Codeigniter 4 做同样的事情 我刚才正在寻找同样的东西 我在这里找到
  • Angular 2. 如何在 Observable 中使用重定向处理 4xx 错误?

    我有一个调用 api 的服务 getItems itemId number Observable
  • 在实体框架 6 中调用标量值函数

    如何在实体框架 6 中调用标量函数 我尝试过以下代码 using MhEntities DContext new MhEntities var Account IdParameter Account Id HasValue new Obje
  • PHP 取消链接不起作用

    我正在尝试使用 unlink 删除 php 中的照片 我之前在其他服务器上使用过它 但这次它不起作用 我已经使用绝对路径进行测试 但仍然不起作用 我把它用作 取消链接 img1 jpg and unlink http www mysite
  • Django ORM 在注释多个聚合列时删除不需要的 Group by

    我想在 django ORM 中创建一个类似这样的查询 SELECT COUNT CASE WHEN myCondition THEN 1 ELSE NULL end as numyear FROM myTable 以下是我编写的 djan
  • Rails 设计,没有路线匹配注销

    尽管有很多类似的问题 但我已经搜索了几个小时但仍然无法解决它 环境 导轨3 0 9 红宝石 1 9 2 设计1 4 2 我使用以下方法更改了默认登录网址 5 resources users 6 devise for users path g
  • 如何在VS2015中构建OpenSSL:x86cpuid.asm是一个空文件

    我需要为使用 VS2015 32 位 的项目构建 OpenSSL 我找到的说明是http developer covenanteyes com building openssl for visual studio 据报道 更新 编辑版本使用
  • 如何在 SwiftUI 中将苹果 ColorPicker 的布局从圆形更改为方形?

    ColorPicker默认的按钮样式是圆形 如下所示 我想将圆形按钮的样式更改为矩形 但似乎没有 API 可以改变它的风格 所以我在它上面放了一个矩形 并将它的 allowedHitTesting 设置为 false 以将单击事件传输到 C
  • 如何实现 DaggerService

    我已经了解了基础知识以及课程 但是对于 dagger 甚至 dagger 2 来说是新手 我不知道应该如何使用它 这是 dagger 意图服务 https google github io dagger api latest dagger
  • 如何将表或行传递给 Postgresql 中的函数?

    这是代码 当前参数类型是数组 但我想传递一个表或行 create or replace function skyband sortedlist rest point returns setof point as declare last x
  • 如何在 C# 中高效处理大量更新对象?

    我正在使用 C 和 XNA 开发 2D 头顶射击游戏 我有一个类 我将其称为 bullet 并且需要每隔几分之一秒更新其中许多实例 我的第一个方法是拥有一个通用的项目符号列表 然后根据需要简单地删除和添加新的项目符号 但在这样做的过程中 G
  • 如何在不使用 setGridLinesVisible() 方法的情况下永久显示 GridPane 对象网格线?

    是否可以使所有GridPane的网格线永久可见而不使用setGridLinesVisible 我知道setGridLinesVisible 仅用于调试目的 我想显示网格线以方便最终用户 另外 我需要在窗格容器而不是画布上工作 我的程序能够在
  • iOS:保存为 PNG 表示数据后图像旋转 90 度

    我已经进行了足够的研究来使其正常工作 但无法修复它 从相机拍照后 只要我将图像存储为 UIImage 就可以了 但是一旦我将此图像存储为 PNG 表示形式 它就会旋转 90 度 以下是我的代码和我尝试过的所有操作 void imagePic
  • 检索或更改伪元素的 CSS 规则

    编辑 2015 10 07 1624 CST 这个问题已被标记为可能重复 我发布它的原因是其他问题的答案都没有提供我想要的所有信息 我想要一种简单而直接的方法来做到这一点 我可以负责控制样式表和规则的顺序 以便引用正确的规则 我还希望得到关
  • 为什么 jQuery 不自动附加 JSONP 回调?

    The getJSON 文档指出 如果指定的 URL 位于远程服务器上 则该请求将被视为 JSONP 请参阅 的讨论jsonp ajax 中的数据类型以获取更多详细信息 The ajax 的文档jsonp数据类型状态 强调我的 使用 JSO
  • 如何引用命名 Excel 表格中的最后一行?

    我目前正在尝试格式化表格的一列 以便如果另一列中存在任何匹配的名称 则原始列中的单元格将突出显示 这是我的意思的一个例子 第 10 行具有 M6A1 的先决条件 但是 第 11 行的名称为 M6A1 我希望第 10 行的 M6A1 突出显示
  • WCF 中的 mexTcpBinding - IMetadataExchange 错误

    我想让 WCF over TCP 服务正常工作 我在修改自己的项目时遇到了一些问题 因此我想从 VS2008 中包含的 基本 WCF 模板开始 这是初始的 WCF App config 当我运行该服务时 WCF 测试客户端可以正常使用它