2011-11-03 20 views
6

ben kale wcf tesis tescil işlemleriyle ilgili karıştı kurulum Kale Wcf Tesisine svc dosyası gerekiyor mu. Ben HTTP olmayan hizmetler

Ben basicHttpBinding için bazı blog mesajları okuyun. Ancak net.tcp kurulumu için net, kolay bir örnek bulamadı.

Ben bir konsol uygulamasından hizmet barındırmak istiyorum ...

Burada bir sorun görebilirsiniz Bu ... gibi bir şey yazdı? Eğer false bu seti varsa bir AddressAlreadyInUse istisna alırsınız - sen meta yayınlamak isterseniz

_container = new WindsorContainer(); 
_container.AddFacility<WcfFacility>(); 

_container.Register(Component.For<IMembershipService>().ImplementedBy<MembershipService>() 
    .AsWcfService(
     new DefaultServiceModel() 
      .AddEndpoints(WcfEndpoint 
        .BoundTo(new NetTcpBinding() { PortSharingEnabled = false }) 
        .At("net.tcp://localhost/MembershipService") 
      ) 
      .PublishMetadata() 
    ) 
); 

cevap

4

Eğer MEX bitiş noktası pay düzenli TCP bağlantı noktasıyla aynı bağlantı noktasını izin (bağlantı noktası paylaşımını etkinleştirmek gerekir) ve muhtemelen, bu nedenle kodu (varsayarak olmalıdır liman 8080) sizin için sorun yok) (URL'nizde TCP aksi kullanacağı portu emin bir limana belirtmek gerekir:

_container.Register(Component.For<IMembershipService>().ImplementedBy<MembershipService>() 
    .AsWcfService(
     new DefaultServiceModel() 
      .AddEndpoints(WcfEndpoint 
        .BoundTo(new NetTcpBinding() { PortSharingEnabled = true}) 
        .At("net.tcp://localhost:8080/MembershipService") 
      ) 
      .PublishMetadata() 
    ) 
); 

Bu işler ince kullanarak kale Windsor 3.0.

+0

aklında bir kullanıcı portu paylaşımı kullanmak için izin verilmez olasılıkları tutun. Bu sorunu yaşadım, kullanıcının bunu yapmasını sağlamak için SMSvcHost.exe.config dosyasındaki allowAccounts bölümünü düzenleyebileceğim ipucuna sahip bir CommunicationException aldım. Ancak bu çözüm, dosyanın C: \ Windows \ Microsoft.NET \ dizininde bulunmasına neden olmaz. Çözümüm şu ana kadar: Mex Endpoint/PublishMetadata() öğesini kaldırın. Gelecekte gerekirse meta verileri ikinci bir ciltleme yapılandırmasıyla yayınlayacağım. –

+0

Oh ve windows servislerimde "Net.Tcp Port Paylaşımı Hizmeti" devre dışı bırakılmadan önce. Son kullanıcınız bunu da devre dışı bırakmış olabilir ve etkinleştirmesine izin verilmeyebilir (ve bir yükleyici kullanarak etkinleştirmek hoş bir seçenek değildir) –