无法从 WCF 测试客户端访问 Net TCP 服务

2024-01-09

我正在尝试从 IIS 中运行两个 WCF 服务,一个是 Web 服务,另一个是 Net TCP 绑定服务。

这是我的 Web.config 的模拟(我已匿名化服务名称):

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="ServerService">
        <endpoint address="ServerService" 
                  binding="netTcpBinding" 
                  bindingConfiguration="" 
                  name="NetTcpEndPoint" 
                  contract="IServerService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8523/"/>
            <add baseAddress="htt://localhost:8523/"/>
          </baseAddresses>
        </host>
      </service>

      <service name="MyWebService">
        <endpoint address=""
                  binding="wsHttpBinding"
                  bindingConfiguration=""
                  name="AACCWSEndPoint"
                  contract="IMyWebService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8523/IMyWebService"/>
          </baseAddresses>
        </host>
      </service>

    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

当我在 IDE 中运行它时,它会打开一个在端口 51953 上运行的页面,我可以通过浏览来获取 Web 服务的 WSDLhttp://localhost:51953/WebService.svc?wsdl http://localhost:51953/WebService.svc?wsdl(注意端口不同)。 我似乎无法通过将端口更改为我在 webconfig 文件 (8523) 中指定的端口来获取 WSDL。

当我将 WcfTestClient 应用程序指向“net.tcp://localhost:8523/ServerService 时,它​​给我一个错误,指出它无法访问元数据,据我所知,我已经配置了元数据(第二个服务中的端点)。

我在这里做错了什么?

UPDATE:

我尝试按照建议将项目属性上的端口号更改为 8523,但这似乎不起作用,我还尝试将 mex 端点的地址更改为“ServerService\mex”,测试客户端花了一些时间进行搅动,但是然后它抛出以下错误:

错误:无法从中获取元数据 net.tcp://localhost:8523/ServerService 如果这是 Windows (R) 请访问您有权访问的通信基础服务 检查您是否已在指定的位置启用元数据发布 地址。如需启用元数据发布的帮助,请参阅 MSDN 文档位于http://go.microsoft.com/fwlink/?LinkId=65455.WS-元数据 http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata交换 错误 URI:net.tcp://localhost:8523/ServerService 元数据 包含无法解析的引用: 'net.tcp://localhost:8523/ServerService'。您已尝试创建 不支持 .Net Framing 的服务的通道。这是 您可能遇到 HTTP 端点。预期的 记录类型“PreambleAck”,找到“72”。

我将继续挖掘,但我将不胜感激任何帮助。

更新2:

我已将 mex 端点更改为 mexTcpBinding: 这是服务标签:

    <endpoint address="ServerServiceWS"
              binding="wsHttpBinding"
              bindingConfiguration=""
              name="WSEndPoint"
              contract="IServerService">
      <identity>
        <dns value="localhost" />
      </identity>
    </endpoint>
    <endpoint address="mex"
              binding="mexTcpBinding"
              contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:8523/"/>
        <add baseAddress="http://localhost:8523/"/>
      </baseAddresses>
    </host>
  </service>

还是没有运气。为了确保我在测试器中输入正确的网址,我使用的网址是:

net.tcp://localhost:8523/ServerService

我也尝试过:

net.tcp://localhost:8523/mex

and

net.tcp://localhost:8523/

所有这些都给了我以下错误的一些变化:

错误:无法从中获取元数据 net.tcp://localhost:8523/ServerService 如果这是 Windows (R) 请访问您有权访问的通信基础服务 检查您是否已在指定的位置启用元数据发布 地址。如需启用元数据发布的帮助,请参阅 MSDN 文档位于http://go.microsoft.com/fwlink/?LinkId=65455.WS-元数据 http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata交换 错误 URI:net.tcp://localhost:8523/ServerService 元数据 包含无法解析的引用: 'net.tcp://localhost:8523/ServerService'。您已尝试创建 不支持 .Net Framing 的服务的通道。这是 您可能遇到 HTTP 端点。预期的 记录类型“PreambleAck”,找到“72”。

UPDATE 3

FWIW 我认为我的 WEb.config 可能存在更大的问题,这是它目前的样子:

<?xml version="1.0"?>
<configuration>

  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="ServerService">
        <endpoint address="" 
                  binding="netTcpBinding" 
                  bindingConfiguration="DefaultBindingConfig" 
                  name="NetTcpEndPoint" 
                  contract="IServerService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>

        <endpoint address="mex"
                  binding="mexTcpBinding"
                  contract="IMetadataExchange" 
                  bindingConfiguration="mexBinding"/>
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8523/"/>
          </baseAddresses>
        </host>
      </service>

      <service name="MyWebService">
        <endpoint address=""
                  binding="wsHttpBinding"
                  bindingConfiguration=""
                  name="MyWSEndPoint"
                  contract="IMyWebService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange"
                  bindingConfiguration="mexHttpBinding"/>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8523/MyWebService"/>
          </baseAddresses>
        </host>
      </service>

    </services>
    <bindings>
      <netTcpBinding>
        <binding name="DefaultBindingConfig"
                 maxConnections="5"
                 portSharingEnabled="true" >
        </binding>
        <binding name="mexBinding"
                 portSharingEnabled="true">
          <security mode="None"></security>
        </binding>
      </netTcpBinding>
      <mexTcpBinding>
        <binding name="mexTcpBinding"/>
      </mexTcpBinding>
      <mexHttpBinding>
        <binding name="mexHttpBinding"/>
      </mexHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServerServiceBehaviour">
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
        <behavior name="MexBehaviour">
          <serviceMetadata httpGetEnabled="true" policyVersion="Policy15"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

</configuration>

我可以浏览到 Web 服务,这允许我使用 ?wsdl 获取 WSDL,但如果我输入地址http://localhost:8523/MyWebService http://localhost:8523/MyWebService进入 WCF 测试器它也会引发错误。

错误:无法从中获取元数据http://localhost:8523/MyWebService http://localhost:8523/MyWebService如果这是您要访问的 Windows (R) Communication Foundation 服务 有访问权限,请检查您是否已启用元数据发布 指定的地址。如需启用元数据发布的帮助,请 请参阅 MSDN 文档:http://go.microsoft.com/fwlink/?LinkId=65455.WS-元数据 http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata交换 错误网址:http://localhost:8523/MyWebService http://localhost:8523/MyWebService元数据包含 无法解析的参考: 'http://localhost:8523/MyWebService'。发生错误 接收 HTTP 响应http://localhost:8523/MyWebService http://localhost:8523/MyWebService。 这可能是由于服务端点绑定未使用 HTTP 协议。这也可能是由于 HTTP 请求上下文 由服务器中止(可能是由于服务关闭)。看 服务器日志以获取更多详细信息。底层连接已关闭: 接收时发生意外错误。无法从中读取数据 传输连接:现有连接被强制关闭 由远程主机。现有连接被强行关闭 远程主机HTTP GET错误URI:http://localhost:8523/MyWebService http://localhost:8523/MyWebService下载时出现错误 'http://localhost:8523/MyWebService'。 HTTP 请求失败 状态 404:未找到。

我认为问题要么与路径有关,要么我只是将错误的 URL 放入测试应用程序中。要么是我仍然没有正确配置元数据。


对于 HTTP 端点,您需要重新配置项目属性 http://msdn.microsoft.com/en-us/library/ms178108.aspx这样,如果使用 IIS Express 托管,它就会在端口 8523 启动 web.config 定义的端点。使用特定端口 (8523) 而不是自动分配的端口 (51953)。

对于 TCP 元数据,您需要支持启用 TCP 的 mex 端点(mexTcpBinding http://msdn.microsoft.com/en-us/library/aa967279.aspx).

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

无法从 WCF 测试客户端访问 Net TCP 服务 的相关文章

  • WCF WebGetAttribute 与 WebInvokeAttribute

    WebGetAttribute 只是 Method GET 的 WebInvokeAttribute 的语法糖吗 或者有根本的区别吗 您立即观察到 WebGet 和 WebInvoke 非常相似 这与事实相差不远 正如您已经说过的 WebG
  • 无法在 web.config 中为 WCF Web 服务设置服务名称属性

    我编写了一个运行良好的 WCF Web 服务 然后我从另一个应用程序复制了该 Web 服务的内容 并创建了一个新的 WCF 文件 该文件在 web config 中创建了一个新文件 但名称属性显示找不到命名空间 以下是我的 WCF 前几行的
  • 世界CF。服务通用方法

    如何在 wcf 服务中使用通用方法 我写了这段代码 OperationContract void AddItem
  • WCF服务契约上的数据注释

    我有一个 WCF 服务 其中定义了一个 DataContract 类 每个属性都有 DataMember 属性 并且我已向其中几个属性添加了几个数据注释属性 Required 和 StringLength 然后 我在 ASP NET MVC
  • .NET Web 服务 (asmx) 超时问题

    我正在连接到供应商提供的 Web ASMX 服务并通过线路发送一组数据 当您向项目添加服务引用时 我的第一次尝试遇到了 Visual Studio 默认在 app config 文件中引发的 1 分钟超时 我把它增加到 10 分钟 又是一次
  • 将文件附加到 WCF REST 服务响应

    我有一个看起来像这样的资源 users id summary format format When format是 xml 或 json 我用一个由 WCF 自动编码的用户摘要对象进行响应 到目前为止还不错 但当format等于 pdf 我
  • 是否可以将 WPF Combobox.SelectedValue 绑定到多个 ObjectDataProvider?

    尝试确定是否可以使用 XAMAL 绑定将 ComboBox 的 SelectedValue 绑定到多个 ObjectDataProvider 的输入 我查看了 MultiBinding 但这似乎将多个控件组合在一起 这并不完全是我今天想要的
  • msmq - 触发器 - 独立可执行调用不起作用

    过去几天我一直在尝试使用 msmq 触发器来调用 exe 文件 它永远不会被调用 这些是我遵循的步骤 创建了一个提及队列路径并检查了查看的触发器 启用 选中 创建了一个不带任何条件的规则 以便每当获得新消息时都会触发触发器 并选择提到独立可
  • 序列化 .NET WCF 服务的类型时出现问题:服务 WSDL 在 XSD 中定义空类型

    我正在使用 WCF 编写一个 Web 服务 我创建了数据合约 我创建了我的服务合同 界面 我定义了方法 其参数的类型与数据契约相同 我实现了创建服务类的服务合同 我使用 svc 文件和 IIS 托管我的服务 我尝试了我的服务 寻找http
  • wsdl 文件中的 svcutil:找不到目标命名空间的错误架构

    在我的机器上 我有一个 WSDL 文件和所有必需的架构文件 我正在尝试使用 svcutil 从 WSDL 创建客户端代理代码 命令 svcutil myfile wsdl 我在使用 svcutil 时不断收到错误 但在使用soapUI 加载
  • WCF:在 ServiceModel 客户端配置部分中找不到引用协定“IService”的默认端点元素。当托管在 IIS 中时

    我有一个 WCF 服务托管在 IIS 中 我还有一个 WCF 客户端 控制台应用程序 我用过svcutil构建代理类和配置文件 然后将它们添加到我的客户端项目中 它建造得很好 但是当我尝试运行该程序时 它抛出以下异常 在 ServiceMo
  • 测试项目和配置文件

    我的 Visual Studio 2008 解决方案中有这种设置 一个使用库 Lib1 需要 app config 文件中的一些配置条目 的 WCF 服务项目 WCFService 我有一个单元测试项目 MSTest 其中包含与 Lib1
  • WCF 服务 - 自定义主体

    在 WCF 服务类的构造函数中 我将当前主体设置为消息头中传递的主体的主体 Thread CurrentPrincipal OperationContext Current IncomingMessageHeaders GetHeader
  • 如何防止在 CXF Web 服务客户端中生成 JAXBElement

    我正在尝试使用 CXF 创建一个 Web 服务客户端来使用 WCF Web 服务 当我使用 wsdl2java 时 它生成具有 JAXBElement 类型而不是 String 的对象 我读到有关使用 jaxb bindings xml 文
  • wcf json网络服务

    创建 JSON Web 服务的最佳方法是什么 我们还有另一个使用 Java 的团队 他们坚持使用 JSON 完成所有通信 我更喜欢使用 WCF 而不是任何第三方框架 我找到了这个博客 http www west wind com weblo
  • WPF 和 WCF 应用程序的用户身份验证/授权的“最佳实践”是什么?

    假设我有一个 NET 富客户端 WPF 应用程序 它将同时部署在 3 个不同的场景中 客户端和服务器代码在单个进程中运行 客户端代码在 Intranet 计算机上运行 并通过 WCF 与运行应用程序 域 基础设施代码的服务器计算机进行通信
  • jquery ajax“发布”调用

    我是 jQuery 和 Ajax 的新手 并且在 发布 方面遇到问题 我正在使用 jQuery Ajax post 调用将数据保存到数据库 当我尝试保存数据时 它将 null 传递给我的 C 方法 jQuery 看起来像这样 functio
  • WCF 服务参考支持文件未更新

    我有一个 VS 2010 解决方案 其中包含一个 WCF 服务项目和一个单元测试项目 单元测试项目有一个对WCF服务的服务引用 WCF 服务项目的 Web config 将许多绑定属性设置为非默认值 网络配置 特别注意maxBufferSi
  • 创建WCF数据服务以在服务主机中使用

    我有一个服务应用程序 它通过不同的绑定托管多个 WCF 端点 我现在想在同一服务主机中托管 WCF 数据服务 这个帖子 https stackoverflow com questions 2926767 wcf data service h
  • 如何为本机启用现有 WCF 服务的 JSONP?

    我有一个现有的服务 如下方法 AspNetCompatibilityRequirements RequirementsMode AspNetCompatibilityRequirementsMode Allowed ServiceBehav

随机推荐

  • Laravel 5.2 身份验证 - 如何在每个页面中显示登录用户名和注销链接?

    Laravel 5 2 身份验证 我使用 Laravel 5 2 创建了一个新的身份验证脚手架 php artisan make auth 一切都很完美 除了即使在我在途中登录后我也会收到登录 注册链接 但当我在途中时 它会显示带有注销链接
  • ElasticSearch如何查询最长的任务

    我在 Elastic Search 中有以下格式的数据 POST slots slot 1 taskId 1 datetime 2020 05 10T08 45 44 status START POST slots slot 2 taskI
  • “node_modules”文件夹的用途是什么?

    到底是什么节点模块文件夹以及它的用途是什么 我知道当我们下载任何库时npm 库转到文件夹节点模块 我还知道 当我们要上传它 例如上传到 GitHub 时 我们必须忽略节点模块文件夹 因为它占用大量空间 通过文件包 json我们可以使用下载所
  • 在第 0 行的“C:\”中找不到路径的一部分

    我遇到了一个错误Script Task in SSIS package 我可以找到类似的问题 但它们与我的情况不同 构建脚本失败并出现以下错误 有关错误列表 请参阅下图 严重性代码 说明 项目文件行抑制状态 错误 找不到路径的一部分 C U
  • Scala 的扩展性是否比其他 JVM 语言更好?

    这是我目前知道的唯一提问方式 据了解 Scala 使用 Java 虚拟机 我以为朱比也这么做了 Twitter 将其中间件切换为 Scala 他们可以做同样的事情并使用 Jruby 吗 他们是否可以从 Jruby 开始 而不会因为扩展问题而
  • 隐藏/保护 php-engine 配置文件的最佳实践?

    我刚刚接到一项任务 需要开发一个旧式开发的网页 这意味着 常用的变量 常量和数据库连接变量都在查看php engine中 而不是在单独的文件中 我想我会将它们放入 config php 或 config inc 文件中 然后与 requir
  • 无法将登录页面重定向到安全页面

    我有一个使用 php 创建的登录页面 但在正确登录后无法将其带到管理页面 我知道我使用的登录名是正确的 因为我刚刚创建了它 如果它是错误的 它应该告诉我 然而 一旦我登录 整个页面就变成空白 网址显示我仍在登录页面而不是管理页面 我检查了错
  • 在 OpenAPI 2 中等效使用 oneOf(来自 OpenAPI 3)

    我怎样才能调整这个片段oneOf到等效的 OpenAPI 2 0 版本 formats type array description Possible parameter format items oneOf type string typ
  • kzalloc() - 单次调用的最大大小?

    我们可以在一次调用中使用 kzalloc 分配的最大大小是多少 这是一个非常常见的问题 另外 如果我可以验证该值 请告诉我 上限 在单个 kmalloc kzalloc 请求中可以分配的字节数 是以下函数 处理器 实际上是页面大小 以及 好
  • 如何将两个mySQL数据库合并为一个?

    我有两个数据库 每个数据库包含不同的表 leave sql 和 crm sql 我想将所有休假表转移到 crm 数据库中 我该怎么做呢 如果其他数据库具有与叶子数据库不同的表 那么您所需要做的就是将数据导入到 crm 数据库中 最后 确保您
  • plot() 和 do.call():当使用“...”时,如何将表达式传递给绘图标题?

    当运行以下代码时 我得到Error in as graphicsAnnot text could not find function bold 我怎样才能解决这个问题 my qq lt function x main expression
  • jQuery:如何制作可折叠的树导航?

    我有标题 每个标题都有子项目 当我单击标题时 我希望它切换查看或显示标题内容 这是我到目前为止所拥有的 j h2 click function if j this next is hidden j this next show else j
  • Flutter:如何修复底部溢出

    我有一个带有列布局的 Flutter Widget 它有两个容器 其中一个有一个ListView builder 当页面呈现时我得到一个 底部溢出 169px 我不知道如何解决它 我在谷歌上搜索了解决方案 并尝试了各种方法 例如包装一个或多
  • 如何找到缺失的行?

    我有两个相同的表 A 和 B 这两个表具有相同的字段 例如表 A bin storage plant 和 B bin storage plant 但是当我检查数据时 表A有5238行 B表有5249行 所以我不知道缺少哪11行 我需要帮助来
  • UITableViewCell 内的 UICollectionView

    我注意到 iOS 在使用时非常卑鄙UICollectionView里面一个UITableViewCell 我想要实现的目标是拥有一组图像 UICollectionView方法 内UITableViewCell 我正在尝试模仿 Faceboo
  • IOS - 从应用程序商店安装旧版本的应用程序

    两天前我发布了应用程序的更新 从那时起 我从用户那里听说他们正在使用旧版本的应用程序 真正奇怪的是 用户在应用商店中看到了新的应用描述和屏幕截图 我已经弄清楚如何可靠地重现该问题 这是我可以自己解决的问题吗 我已经联系了苹果公司并在网上进行
  • 在 OS X 10.9 上找不到“ext/slist”文件

    我正在尝试让一些旧的第三方软件在 OS X 10 9 上编译 我通过调整 Makefile 中的设置设法摆脱了大多数编译问题 这些文件最初是为gcc大概是在 2005 年左右 但是 我目前不知道如何克服 C 源文件的这个错误 utility
  • 注入返回字符串 CDI 的生产者方法

    我想使用 CDI 将常量字符串消息注入 JSF Web 应用程序中的托管 bean 这里是生产者类 Named RequestScoped public class StringProducer Produces Named message
  • 如何保证 ThreadPoolExecutor 中的 FIFO 执行顺序

    我用这行代码创建一个 ThreadPoolExecutor private ExecutorService executor new ThreadPoolExecutor 5 10 120 TimeUnit SECONDS new Arra
  • 无法从 WCF 测试客户端访问 Net TCP 服务

    我正在尝试从 IIS 中运行两个 WCF 服务 一个是 Web 服务 另一个是 Net TCP 绑定服务 这是我的 Web config 的模拟 我已匿名化服务名称