2011-11-03 7 views
6

मैं महल WCF सुविधा पंजीकरण के बारे में उलझन में हूँ के लिए सेटअप कैसल WCF सुविधा के लिए एसवीसी फ़ाइल की आवश्यकता है।मैं गैर- HTTP सेवाओं

मैं BasicHttpBinding के लिए कुछ ब्लॉग पोस्ट पढ़ें। लेकिन net.tcp सेटअप को सेट करने के लिए एक स्पष्ट आसान नमूना नहीं मिला।

मैं एक सांत्वना आवेदन से सेवा होस्ट करना चाहते हैं ...

मैं इस ... की तरह कुछ लिखा था तुम यहाँ एक समस्या देख सकते हैं?

_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() 
    ) 
); 

उत्तर

4

आप मेटाडाटा प्रकाशित करना चाहते हैं आप पोर्ट शेयरिंग (सक्षम करने के लिए नियमित रूप से TCP पोर्ट के रूप में ही बंदरगाह जाने के लिए MEX endpoint शेयर की आवश्यकता होगी - आप गलत पर इस सेट है, तो आप एक AddressAlreadyInUse अपवाद मिल जाएगा) और आप शायद (यकीन है कि क्या पोर्ट टीसीपी अन्यथा का प्रयोग करेंगे नहीं अपने URL पर एक बंदरगाह निर्दिष्ट करने की आवश्यकता) है, तो आपके कोड चाहिए (यह मानते हुए किया जा पोर्ट 8080 आप के लिए ठीक है):

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

इस महल में काम करता है ठीक उपयोग करते हुए विंडसर 3.0।

+0

उस स्थिति को ध्यान में रखें जहां उपयोगकर्ता को पोर्ट साझाकरण का उपयोग करने की अनुमति नहीं है। मुझे यह मुद्दा था, मुझे संकेत के साथ एक संचार अपवाद मिला है कि मैं उपयोगकर्ता को ऐसा करने में सक्षम करने के लिए फ़ाइल SMSvcHost.exe.config में guarantAccounts अनुभाग को संपादित कर सकता हूं। लेकिन यह समाधान व्यावहारिक नहीं है क्योंकि फाइल C: \ Windows \ Microsoft.NET \ में स्थित है ... मेरा समाधान अब तक: Mex Endpoint/PublishMetadata() को हटाएं। यदि भविष्य में आवश्यक हो तो मैं मेटा डेटा को दूसरी बाध्यकारी कॉन्फ़िगरेशन के साथ प्रकाशित करूंगा। –

+0

ओह, और इससे पहले कि मेरे पास विंडोज़ सेवाओं में "नेट टीसीपी पोर्ट शेयरिंग सेवा" अक्षम थी। आपके अंतिम उपयोगकर्ता को यह अक्षम भी हो सकता है और इसे सक्षम करने की अनुमति नहीं दी जा सकती है (और इंस्टॉलर का उपयोग करके इसे सक्षम करना एक सुंदर विकल्प नहीं है) –

संबंधित मुद्दे