1

クラスのメソッドをUri[] baseAddresses使用してサービスホストを作成するときに呼び出されるパラメーターがあります。CreateServiceHostServiceHostFactory

このメソッドはいつ呼び出されますか? baseaddresses 配列の値は? どこから設定されますか?

私たちの側から設定できますか?

ありがとう

4

1 に答える 1

1

IISまたは別のコンテナーでサービスをホストする場合、サービスは(構成ファイルなどから)自動的に渡されます。

プログラムでサービスをホストしている場合は、サービスが渡されます。現在、メソッド自体に問題がありますが、標準クラスを使用すると、次のようになります(の配列が探しているものです)。CreateServiceHostServiceHostUri

using System;
using System.ServiceModel;
using System.ServiceModel.Description;
using MyApp.DatabaseService.Contracts; // IDatabase interface
using MyApp.DatabaseService.Impl; //DatabaseService

 public class Program
    {

        static void Main(string[] args)
        {
            using (ServiceHost host = new ServiceHost(
                typeof(DatabaseService),
                new Uri[]{          // <-- baseAddresses
                    new Uri("http://localhost:8111/DatabaseService"),
                    new Uri("net.pipe://localhost/DatabaseService")
                }))
            {
                host.AddServiceEndpoint(typeof(IDatabase),
                    new BasicHttpBinding(),
                    "");

                host.AddServiceEndpoint(typeof(IDatabase),
                    new NetNamedPipeBinding(),
                    "");

                // Add ability to browse through browser
                ServiceMetadataBehavior meta = new ServiceMetadataBehavior();
                meta.HttpGetEnabled = true;
                host.Description.Behaviors.Add(meta);

                host.Open();

                Console.WriteLine("IDatabase: DatabaseService");
                Console.WriteLine("Service Running. Press Enter to exit...");
                Console.ReadLine();

                host.Close();
            }
        }
    }
于 2012-10-11T22:13:37.653 に答える