您好,ServiceHost.Behaviors是一个IServiceBehavior类型的对象集合。
IserviceBehavior 提供了一个在整个服务范围内修改或则插入定制扩展的机制。
如果需要把服务通过WSDL对外暴露对服务的Metadata描述,就需要加一个ServiceMetadataBehavior类型的Behavior:
ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
behavior.HttpGetEnabled = true;
behavior.HttpGetUrl = new Uri("http://localhost:8001/");
myServiceHost.Description.Behaviors.Add(behavior); //myServiceHost是ServiceHost实例
要发布Metadata,需要对外提供一个Http的地址,由HttpGetUrl 属性指定。
如果HttpGetUrl指定了绝对地址,那么对外发布Metadata的地址就为:HttpGetUrl 后加?wsdl。
如果HttpGetUrl指定了相对地址,那么对外发布Metadata的地址就为:ServiceHost的baseAddress + HttpGetUrl 后加?wsdl。
如果没有设置HttpGetUrl,那么Metadata的地址就是ServiceHost的baseAddress后加?wsdl
不管HttpGetUrl属性怎么设置,ServiceHost的baseAddress总是作为这个ServiceHost提供服务的描述页面的URL。