C#IIS托管WCF服务不会生成客户端端点

时间:2015-04-02 19:10:49

标签: c# wcf iis visual-studio-2013 wsdl

我在Visual Studio 2013中使用C#创建了一个WCF服务,并将其托管在IIS服务器上。我在新的WPF客户端中使用该服务时遇到问题,因为在添加服务引用后端点丢失了。

我可以使用URL访问该服务,这给了我一个说明页面,说明我需要创建一个客户端来测试服务。该URL适用于服务器和笔记本电脑。 WSDL确实存在,我能够查看XML结构。 Visual Studio允许我使用WSDL URL添加服务引用,并正确生成代理客户端代码。

添加服务引用不会将任何端点添加到客户端的App.Config文件中。 WSDL中的Ctrl-F表明WSDL中没有任何端点数据。由不同部门托管的另一个服务的WSDL确实包括它们的端点,所以我知道它们应该以这种方式列出。

我可以做些什么来让WSDL自动为客户端添加端点配置吗?我不想记住每个新客户端的端点,或者要求其他人每次都使用该服务向我询问。

Per this MSDN article我尝试添加一个部分并重复部分中的端点,重建我的服务,重新启动IIS服务器上的主机网站,并更新我的服务引用,但端点仍然没有已被添加。

当我在“添加服务引用”对话框中使用“发现”选项时,它确实找到了服务项目,但是提供了一个错误,指出该URL不正确。只有样板服务信息的另一个测试解决方案适用于该解决方案中的客户端项目,并将端点添加到客户端配置。它没有Web.Config中的任何内容,我遇到的服务没有。

可能重复this question,但没有得到答复。

以下是来自我的主机网站的Web.Config的相关部分(该服务的App.Config是相同的):

<system.serviceModel>
<client>
  <endpoint binding="webHttpBinding"
            contract="TestLib.Service.ITestLibService" />
</client>
<services>
  <service name="TestLib.Service.TestLibManager">
    <endpoint binding="webHttpBinding" contract="TestLib.Service.ITestLibService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
  </service>
</services>
<bindings>
  <webHttpBinding>
    <binding>
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Windows" proxyCredentialType="Windows"/>
      </security>          
    </binding>
  </webHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <serviceDebug includeExceptionDetailInFaults="true" />
      <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

感谢任何帮助,谢谢!

0 个答案:

没有答案