【问题标题】:Wshttpbinding translated to basicwshttpbinding 翻译成基本的
【发布时间】:2011-11-25 12:20:58
【问题描述】:

我有一个由两个项目组成的 WCF 服务:

  1. WCF 服务库
  2. WCF Web 应用程序

第一个项目有一个由 MyService 实现的服务调用 IMyService。它是通过使用 WS 绑定配置的,如果我在此项目上按 F5,WCFTestClient 会呈现 WS 绑定。 在网络应用程序中,我有一个带有此标记的 .svc 文件,具有相同的名称

 <%@ ServiceHost Language="C#" Debug="true" Service="[Namespace].MyService" %>

如果我在这个项目上按 F5,它会呈现一个 BasicHttpBinding。在客户端中也是如此。 为什么?

【问题讨论】:

    标签: wcf wshttpbinding


    【解决方案1】:

    我刚刚检查了 WCF 服务库项目默认创建 app.config,WSHttpBinding 用于默认服务。当您运行 WCFTestClient 时,它始终使用此本地配置。如果要使用 WCFTestClient 测试其他服务,则必须将其配置添加到此配置中。此配置永远不会用于其他任何事情。

    WCF 服务应用程序使用 web.config。在 WCF 4.0 中,它使用简化的配置,根据一些预定义的条件添加端点。默认情况下,它会将 BasicHttpBinding 端点添加到所有通过 HTTP 公开的服务,公共 ServiceHostFactory

    【讨论】:

    • 感谢您的有用回答。您能告诉我如何强制 Web 项目使用 WS 端点分发服务吗?如果我尝试这样做,它仍然指向基本地址并且我收到 SOAP 不匹配错误(1.1 而不是 1.2)
    【解决方案2】:

    您的配置文件是如何配置的?如果您将端点配置为使用 wshttpbinding,则应使用该端点。

    您介意在此处添加一些代码(包括配置文件中的绑定和端点详细信息),以便我们看一下吗?

    谢谢, 罗伯托·洛佩斯。

    【讨论】:

    • 如果您想了解详细信息,请使用 cmets。
    【解决方案3】:

    我认为最初的问题提出的非常糟糕,要获得令人满意的答案,您需要清楚地说明所有细节。

    首先,您使用的是哪个版本的 Visual Studio?由于什么都没说,我假设它是最新版本的 VS2010 SP1。

    假设您有一个包含两个项目的 Visual Studio 解决方案,一个是 WCF 服务库,另一个是 WCF 应用程序,两者都是使用默认项目模板创建的,无需任何手动调整。

    • WCF 服务库将有一个 app.config 文件,其中包含以下行:

    简而言之,Visual Studio 2010 (SP1) 默认为 WCF 服务库项目使用 wsHttpBinding。

    • 但是,WCF 服务应用程序项目将有一个 web.config 文件,其中不包含明确的端点定义,在这种情况下,使用的默认端点绑定是 basicHttpBinding。

    OP 说“当我在这个项目上按 F5 时……”,这是一个非常误导性的陈述。 “在项目上按 F5”是什么意思?您的意思是您在解决方案树中选择了项目节点,然后按 F5?如果是这种情况,会发生什么将始终取决于解决方案中将哪个项目设置为启动项目(而不是当前在 Visual Studio UI 中选择了哪个项目节点)。

    如果 WCF Service Application 项目是启动项目,按 F5 不会导致 WCF 测试客户端运行,而是会导致项目的文件夹显示在 IE 中。

    如果WCF服务库项目是启动项目,会运行WCF测试客户端,这只是因为在项目属性窗口的调试部分,启动选项默认有以下内容: /client:"WcfTestClient.exe"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      相关资源
      最近更新 更多