我使用的是VS2010 Win 2008 R2。我创建了一个“WCF服务库”,将其放在IIS中的虚拟目录中并将其转换为应用程序。
我将svc文件放在应用程序的根目录中,并将输出构建路径更改为bin
。每次尝试网址http://localhost/test1/Service1.svc
时,我都会收到错误“此服务的元数据发布目前已停用”。
我还尝试了网址http://localhost/test1/MEX
。 Mex行为配置正确但出现此错误。
当我尝试向控制台应用程序添加服务引用时,它也找不到服务的元数据。
答案 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的项目构建输出。