3

WCFサービスがあります。コンソールアプリケーションでサービスをホストしようとしています。

私はここですべての指示に従っています。

これですべてが正常にコンパイルされますが、実行時に例外が発生します。

コントラクト名「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>
4

1 に答える 1

4

mexエンドポイントのアドレスの属性が間違っています...名前ではなくアドレスである必要があります。

于 2009-08-21T01:03:25.617 に答える