在控制台应用程序中托管WCF服务时出现IMetadataExchange MEX端点错误

时间:2009-08-21 00:30:37

标签: .net wcf exception-handling wcf-binding wcf-configuration

我有一个WCF服务。我试图在控制台应用程序中托管服务。

我遵循所有指示here

现在一切都编译得很好,但我在运行时遇到异常。

  

在服务索引器实施的合同列表中找不到合同名称“IMetadataExchange”。将ServiceMetadataBehavior直接添加到配置文件或ServiceHost以启用对此合同的支持。

现在在指示中,我被指示添加

<endpoint binding="mexHttpBinding" bindingConfiguration=""
name="http://localhost:8080/myservice/MEX/" contract="IMetadataExchange" />

我的WCF服务或主机控制台应用程序中没有IMetadataExchange。

异常来自哪里?是否有我错过的参考?

这是我的控制台程序

namespace WcfConsoleHost
{
    class Program
    {
        static void Main(string[] args)
        {
            Type type = typeof(myservice);
            using (ServiceHost host = new ServiceHost(type))
            {

                host.Open();
                Console.WriteLine("The service is available. Press any key...");
                Console.ReadKey();
                host.Close();
            }
        }
    }
}

我的WCF服务只有一个包含契约的接口,然后是myservice类中的实现。

以下是我的整个app.config。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="ServiceBehavior">
                    <serviceMetadata />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <services>
            <service name="myservice">
                <endpoint address="http://localhost:8080/myservice/"
                 binding="basicHttpBinding"
                    bindingConfiguration="" contract="myservice.Ims" />
                <endpoint binding="mexHttpBinding" bindingConfiguration=""
                 address="http://localhost:8080/myservice/MEX/"
                    contract="IMetadataExchange" />
            </service>
        </services>
    </system.serviceModel>
</configuration>

1 个答案:

答案 0 :(得分:4)

mex端点的地址属性错误......它应该是地址,而不是名称。