2009-08-31 45 views
0

Pour faire ci-dessus en utilisant le fichier de configuration que je ferais:Comment programmatiacally définir le nom principal sur un service hébergé

<endpoint 
    address="...." 
    binding="netTcpBinding" 
    bindingConfiguration="MyBinding" 
    contract="IService1"> 
    <identity> 
    <servicePrincipalName value="name"/> 
    </identity> 
</endpoint> 

Mais comment puis-je l'ajouter au code ci-dessous?

Uri uri = new Uri("http://example.com/service"); 
ServiceHost host = new ServiceHost(typeof(Service1), uri); 

NetTcpBinding binding = new NetTcpBinding(); 
binding.Security.Mode = SecurityMode.Message; 
binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows; 
host.AddServiceEndpoint(typeof(IService1), binding, uri); 
host.Open(); 

Répondre

6

Il est un peu lourd, vous devez utiliser la valeur de retour de la méthode AddServiceEndpoint et y fixer:

ServiceEndpoint serviceEndpoint = host.AddServiceEndpoint(typeof(IService1), binding, uri); 
EndpointAddress myEndpointAddress = new EndpointAddress(uri, EndpointIdentity.CreateSpnIdentity("YourIdentity")); 
serviceEndpoint.Address = myEndpointAddress;