WCF元数据中断而没有变化

时间:2014-03-28 14:10:13

标签: c# wcf

我很抱歉,如果我听到agressiv但我接近将我的机器扔出窗外,因为这是WCF连续第三天烧毁我的工作时间。

我今天早上创建了一个简单的WCF服务。我可以从Visual Studio启动它,因此它托管在WCF服务主机中,我可以在3个不同的项目中运行时将其作为服务引用包含在内。我可以从控制台应用程序托管,客户端可以连接到它。

现在我需要另一个项目中的Servicereference,但我不能再在WCF服务主机中托管wcf了。它告诉我:

  

Microsoft WCF-Diensthost

     

Der WCF-Diensthost kann keine Dienstmetadaten finden。 Dies kann zunichtordnungsgemäßer> AusführungderClientanwendungführen。 ÜberprüfenSie,ob Metadaten aktiviert sind。   MöchtenSieden Vorgang wasden?

     

Ja Nein

谷歌翻译:

  

Microsoft WCF服务主机

     

WCF服务主机找不到任何服务元数据。这可能导致错误   执行客户端应用程序。检查元数据是否已启用。你想退出吗?

     

是否

WCF实现其接口或配置没有变化。我仍然可以在控制台应用程序中托管它,但我不能再获得服务引用。 配置是这样的:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- Bei der Bereitstellung des Dienstbibliothekprojekts muss der Inhalt der Konfigurationsdatei der app.config-Datei 
  des Hosts hinzugefügt werden. System.Configuration unterstützt keine Konfigurationsdateien für Bibliotheken. -->
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="WcfHost.Service1Behavior" name="WcfHost.Service1">
        <endpoint address="" binding="netTcpBinding" bindingConfiguration=""
          contract="WcfHost.IWcfInfoHost">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
          contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://localhost:8732/InfoHost/Service1/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfHost.Service1Behavior">
          <serviceMetadata httpGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

</configuration>

这怎么能不改变?

2 个答案:

答案 0 :(得分:0)

请检查web.config文件中的serviceMetaData部分: - serviceMetadata httpGetEnabled =&#34; false&#34;

     <serviceBehaviors>
        <behavior name="WcfHost.Service1Behavior">
          <serviceMetadata httpGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>

只需设置 serviceMetadata httpGetEnabled =&#34; true&#34;

请参阅https://social.technet.microsoft.com/wiki/contents/articles/1298.exposing-a-metadata-exchange-mex-endpoint-over-tcp-with-an-iis-hosted-wcf-service.aspx 这将解决您的问题。

答案 1 :(得分:0)

重新创作后我想出来了。我错了,项目没有改变。我改变了接口实现的类名,所以

<service behaviorConfiguration="WcfHost.Service1Behavior" name="WcfHost.Service1">

不再正确。

但令人非常不安的是,VS重构工具无法更改app.conf,并且最令人不安的是,errormassage与实际错误无关。 WCF让我哭泣。