0

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

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

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

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

4

2 回答 2

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 文件夹在测试下,并且从我设置为 Bin 而不是 Bin/Debug 的项目的构建中输出。

于 2012-10-14T07:51:27.000 回答
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>
于 2012-10-14T07:08:22.697 回答