尝试运行WCF服务时,错误服务元数据不可用

时间:2017-07-20 09:11:16

标签: c# wcf

我的WCF服务的web.config如下所示

<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
  <service name="WcfService1.Service1">
    <endpoint address="" binding="basicHttpBinding"
      bindingConfiguration="" name="service1Endpoint" 
contract="WcfService1.IService1" />
    <endpoint address="" 
behaviorConfiguration="WcfService1.AjaxAspNetAjaxBehavior"
            binding="" contract="WcfService1.IService1" />
  </service>
</services>
<bindings>
  <basicHttpBinding>
    <binding name="service1Endpoint" />
  </basicHttpBinding>
  <webHttpBinding>
    <binding name="webHttpBinding" />
  </webHttpBinding>
</bindings>

<client>
  <endpoint address="http://localhost:2393/Service1.svc" 
binding="basicHttpBinding"
    bindingConfiguration="service1Endpoint" 
contract="ServiceReference1.IService1"
    name="service1Endpoint" />
  <endpoint address="http://localhost:2393/Service1.svc" 
behaviorConfiguration="WcfService1.AjaxAspNetAjaxBehavior"
            binding="webHttpBinding" contract="ServiceReference1.IService1" 
/>
</client>
<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>
      <endpointBehaviors>
        <behavior name="WcfService1.AjaxAspNetAjaxBehavior">
          <enableWebScript />
          <webHttp/>
        </behavior>
      </endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>  
</configuration>

我创建了另一个简单的aspx页面来测试服务是否可访问。但是,当我尝试运行此服务时,显示的错误是无法添加服务。可能无法访问服务元数据。确保您的服务正在运行并公开元数据。任何人都可以告诉我如何解决此错误。 提前致谢。 我的网络服务和合同如下:

namespace WcfService1
{
    [AspNetCompatibilityRequirements(RequirementsMode = 
    AspNetCompatibilityRequirementsMode.Allowed)]
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }
    }
}

合同如下所示

namespace WcfService1
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, 
         ResponseFormat = WebMessageFormat.Json)]
        string GetData(int value);
    }   
}

1 个答案:

答案 0 :(得分:0)

您需要一个mex服务端点来允许公开元数据。在服务节点下添加新端点,如:

<endpoint address="mex" binding="mexHttpBinding" name="MetadataEndpoint"
 contract="IMetadataExchange" />

在此处阅读有关Metadata Exchange Endpoint的更多信息:

http://www.wcftutorial.net/Metadata-Exchange-Endpoint.aspx