IIS中发布的服务说“此服务的元数据发布目前已禁用”

时间:2012-10-13 17:17:34

标签: wcf iis

我使用的是VS2010 Win 2008 R2。我创建了一个“WCF服务库”,将其放在IIS中的虚拟目录中并将其转换为应用程序。

我将svc文件放在应用程序的根目录中,并将输出构建路径更改为bin。每次尝试网址http://localhost/test1/Service1.svc时,我都会收到错误“此服务的元数据发布目前已停用”

我还尝试了网址http://localhost/test1/MEX。 Mex行为配置正确但出现此错误。

当我尝试向控制台应用程序添加服务引用时,它也找不到服务的元数据。

2 个答案:

答案 0 :(得分:0)

您能否分享一下配置文件serviceBehavior部分?

启用元数据交换应该是这样的。

<serviceBehaviors>
   <behavior name="SampleServiceBehavior">
          <!-- 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>

答案 1 :(得分:0)

这是配置文件:

<configuration>
  <system.serviceModel>
    <services>
     <service name="WcfServiceLibrary4.Service1" behaviorConfiguration="ServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/test/"/>
          </baseAddresses>
        </host>

        <endpoint address="" binding="basicHttpBinding"
           contract="WcfServiceLibrary4.IService1"/>

        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">

          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

我首先启用了对虚拟文件夹的匿名访问,之后我看到“此服务的元数据发布目前已禁用。” - 错误。
我试过“http:// localhost / test / mex”,但IIS说“没有这样的资源”。在这里我提到“test”而不是“test1”,因为我更改了虚拟文件夹。 Bin文件夹在Test下并从我设置为Bin not Bin / Debug的项目构建输出。