2011-08-18 5 views
0

J'ai besoin de mettre en œuvre en utilisant le code suivant:Comment configurer le programme de liaison WCF?

<basicHttpBinding> 

     <binding name="NewBinding"> 

      <security mode="TransportCredentialOnly"> 

      <transport clientCredentialType="Basic" /> 

      </security> 

     </binding> 

     </basicHttpBinding> 

Y at-il des échantillons? Je travaille sur le service WCF REST et enregistre les routes manuellement. Placer cette configuration dans la configuration ne fonctionne pas. Je voudrais l'installer programmatique si possible. Aussi, à quel moment du code je devrais le faire?

EDIT:

Mon service routé dans Global.asax comme ceci:

foreach (var account in cmc.Accounts.Where(aa => aa.IsActive).ToList()) 
       { 
        RouteTable.Routes.Add(
         new ServiceRoute(
          account.AccountId + "/mobile", new MyServiceHostFactory(), typeof(MobileService))); 
       } 

Et j'ai mon propre ServiceHost

public class MyServiceHost : WebServiceHost 
    { 
     private readonly Type _serviceType; 
     private readonly CompositionContainer _container; 

     public MyServiceHost(Type serviceType, CompositionContainer container, params Uri[] baseAddresses) 
      : base(serviceType, baseAddresses) 
     { 
      _serviceType = serviceType; 
      _container = container; 
     } 

     protected override void OnOpening() 
     { 
      if (Description.Behaviors.Find<MyServiceBehavior>() == null) 
      { 
       Description.Behaviors.Add(new MyServiceBehavior(_serviceType, _container)); 
      } 

      base.OnOpening(); 
     } 
    } 
+0

Jetez un oeil @ http://stackoverflow.com/questions/835613/wcf-how-can-i-programatically-recreate-these-app-config-values ​​ –

+0

Cet article ne décrit pas comment utiliser ce code lorsqu'il est hébergé dans ASP.NET. J'ai personnalisé ServiceHost et ServiceHostProvider. Idéalement, il faut y aller – katit

Répondre

1

Pour ce cas précis, l'équivalent de liaison est la suivant:

BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly); 
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; 
+0

Carlos, comment puis-je insérer cette liaison dans mon service? – katit

+0

Vous pouvez utiliser la méthode 'ServiceHost.AddServiceEndpoint' qui prend le type de contrat de service (généralement une interface), la liaison et l'adresse. Si vous voulez utiliser des routes, vous aurez besoin d'un 'ServiceHostFactory' pour pouvoir obtenir une référence à l'hôte. Vous pouvez trouver plus sur l'usine à http://blogs.msdn.com/b/carlosfigueira/archive/2011/06/14/wcf-extensibility-servicehostfactory.aspx – carlosfigueira

+0

J'ai ajouté EDIT dans mon message. Avec ce type d'installation, comment puis-je ajouter cette liaison? Où dans mon code? – katit

Questions connexes