2012-03-06 18 views
5

मैं ऑटोफैक के साथ एक क्रॉस-ऐपडोमेन प्रॉक्सी पंजीकृत करने का प्रयास कर रहा हूं।ऑटोफैक और क्रॉस-ऐपडोमेन प्रॉक्सी

प्रॉक्सी द्वारा प्रदर्शित ठोस प्रकार इंटरफ़ेस IServiceHost लागू करता है। इस प्रकार, प्रॉक्सी को काम करने के लिए उस इंटरफ़ेस का उपयोग करके प्रॉक्सी को कॉल करने की अनुमति देने के लिए भी होना चाहिए।

मैं Autofac साथ प्रॉक्सी रजिस्टर करने के लिए, ऐसा करने से प्रयास करें:

void Initialize(IServiceHost host) 
{ 
    Host = host; 

    var builder = new ContainerBuilder(); 
    builder.RegisterInstance(host) 
     .As<IServiceHost>() 
     .SingleInstance(); 

    Scope = builder.Build(); 
} 

हालांकि, builder.Build() फोन पर, मैं मिलता है:

ArgumentException

प्रकार 'System.MarshalByRefObject 'सेवा के लिए असाइन करने योग्य नहीं है' treadmarks.Core.ServiceBase.IServiceHost '।

हालांकि, host, निश्चित रूप से एक IServiceHost है, क्योंकि यह रिक्त नहीं है और यह एक जोरदार टाइप किया विधि तर्क से आता है।

क्या कोई यह समझा सकता है कि मैं प्रॉक्सी को सही तरीके से कैसे पंजीकृत कर सकता हूं?

+0

तो 'मेजबान' 'IServiceHost' लागू नहीं करता है? उस स्थिति में यह एक ऑटोफैक समस्या नहीं है। – Steven

+0

@ स्टेवन मैंने विशेष रूप से कहा था कि प्रॉक्सी प्रकार * करता है * IServiceHost 'लागू करता है, और इसलिए प्रॉक्सी को इसे भी लागू करना होगा। –

+0

ऑटोफैक जांचता है कि 'होस्ट'' IServiceHost' है और क्योंकि यह नहीं है, ऑटोफैक अपवाद फेंकता है। – Steven

उत्तर

2

आपको विधि के साथ .RegisterInstance() के बजाय लैम्ब्डा का उपयोग करने में सक्षम होना चाहिए, इसके आसपास काम करने के लिए।

+0

यह काम करता है। धन्यवाद। –

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