سؤال

كيف يمكنني استخدام Castle wcffacility وجعلها تستخدم إعدادات ملف Config القياسية؟

إذا قمت بالتسجيل مثل ذلك:

container.Register(
AllTypes.Pick()
    .FromAssemblyNamed("{ServicesAssembly}") // <-- service assembly here
    .If(type => type.Name.EndsWith("Service"))
    .WithService.FirstInterface()
    .Configure(configurer => configurer.LifeStyle.Transient)
    .Configure(configurer => configurer.Named(configurer.Implementation.Name))
    .Configure(configurer => configurer.ActAs(new DefaultServiceModel()))
);

أتلقى الخطأ التالي:

الخدمة '{name}' لها نقاط نهاية تطبيق Zero (غير بنية).

إذا تركت:

.Configure(configurer => configurer.ActAs(new DefaultServiceModel()))

يبدو كما لو أن السلوكيات في التكوين يتم تجاهلها.

ما هو الاستخدام الصحيح هنا؟

هل كانت مفيدة؟

المحلول

حسنًا ، اكتشفها :)

أسجل مثل ذلك:

container.Register(
AllTypes.Pick()
    .FromAssemblyNamed("{ServicesAssembly}") // <-- service assembly here
    .If(type => type.Name.EndsWith("Service"))
    .WithService.FirstInterface()
    .Configure(configurer => configurer.LifeStyle.Transient)
    .Configure(configurer => configurer.Named(configurer.Implementation.Name))
    .Configure(configurer => configurer.ActAs(new DefaultServiceModel().Hosted()))
);

ال المستضافة () هل هناك للإشارة إلى أنني أستضيف الخدمات ؛ آخر يبدو كما لو أن منشأة WCF ستحاول استضافتها ، مما يؤدي إلى صراعات الموانئ.

لذلك كانت المشكلة أن اسم للخدمة في ملف التكوين لديها لتكون اسم النوع الكامل للتنفيذ. إذا لم يكن أحد يتلقى خطأ يوضح شيئًا على غرار عدم تحديد نقاط النهاية المحددة. لذا فإن اسم الخدمة هو ليس نفس الاسم المحدد في وندسور.

نصائح أخرى

أنت هناك تقريبا.

انت تحتاج هذا:

.ActAs(new DefaultClientModel(WcfEndpoint.FromConfiguration( <<key In Configuration>> )));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top