WCF无法获取元数据

时间:2016-12-09 18:12:47

标签: c# wcf wcf-configuration

我正在尝试创建可以通过HTTP和命名管道访问的WCF服务。更改默认配置后(我添加了netNamedPipeBinding和端点),我不能再使用WCF服务了。我的Web.config会出现问题。

修改

我忘了发布我得到的错误:

  

错误:无法获取元数据   来自http://localhost/WebServices/CreateContent.svc

     

如果这是您的Windows(R)Communication Foundation服务   有权访问,请检查您是否已启用元数据发布   指定的地址。

的Web.config

<system.serviceModel>
    <services>
      <service name="Application.WebServices.CreateContent" behaviorConfiguration="behave">
        <endpoint binding="basicHttpBinding" bindingConfiguration="basicHttpBinding"
          name="basicHttp" contract="Application.WebServices.ICreateContent" />
        <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="mexHttpBinding"
          name="mexHttp" contract="IMetadataExchange" />
        <endpoint binding="netNamedPipeBinding" bindingConfiguration="netNamedPipeBinding"
          name="netNamedPipe" contract="PTUmbraco.WebServices.ICreateContent" />
        <endpoint binding="mexNamedPipeBinding" bindingConfiguration="mexNamedPipeBinding"
          name="mexNamedPipe" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/WebServices/CreateContent.svc" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="behave">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <bindings>
      <basicHttpBinding>
        <binding name="basicHttpBinding" maxBufferSize="10485760" maxReceivedMessageSize="10485760" />
      </basicHttpBinding>
      <netNamedPipeBinding>
        <binding name="netNamedPipeBinding" />
      </netNamedPipeBinding>
      <mexHttpBinding>
        <binding name="mexHttpBinding" />
      </mexHttpBinding>
      <mexNamedPipeBinding>
        <binding name="mexNamedPipeBinding" />
      </mexNamedPipeBinding>
    </bindings>
  </system.serviceModel>

1 个答案:

答案 0 :(得分:0)

我会尽力回答,因为你没有发布你得到的错误。

您是否检查过您的Net.Pipe侦听器适配器服务是否正常运行?

enter image description here

如果您收到的错误是&#34;由于端点地址的服务不可用于地址协议,因此无法分派邮件,他们可能必须使用 ServiceModel注册来自microsoft的工具,在您的框架文件夹上运行此命令:

C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319&gt; ServiceModelReg.exe -r

我已经遇到过WCF的一些问题,和你一样,认为这是配置问题,但你的配置似乎没问题,所以你可以尝试一下。

这里有关于ServiceModel工具的更多信息:

https://forums.asp.net/t/2039313.aspx?WCF+TCP+Binding+Hosted+in+IIS+7+endpoint+address+is+unavailable+for+the+protocol+of+the+address