سؤال

لقد أعلنت عقدين خدمة على النحو التالي:

[ServiceContract]
public interface IContract1
{
    [OperationContract]
    double Add(int ip);
}

[ServiceContract]
public interface IContract2
{
    [OperationContract]
    double Add(double ip);
}

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

يحتوي البيانات الوصفية على خطأ لا يمكن حله .... لم يكن هناك نقطة نهاية الاستماع في ... ، إلخ.

أعلم أنه لا يمكنك الحصول على اثنين OperationContractS بنفس الاسم ولكن هل من الممكن أن يكون لديك عقدين للتشغيل في عقود خدمة مختلفة بنفس الاسم ولكن توقيع مختلف؟

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

المحلول

إذا قامت إحدى الخدمة بتطبيق كلا العقدين ، فيجب عليك إعطاء أسماء فريدة لعقود التشغيل الخاصة بك.

[ServiceContract]
public interface IContract1
{
    [OperationContract(Name="AddInt")]
    double Add(int ip);
}

[ServiceContract]
public interface IContract2
{
    [OperationContract(Name="AddDouble")]
    double Add(double ip);
}

نصائح أخرى

يمكنك استخدام ما يلي.

[ServiceContract]
public interface IContract1
{
    [OperationContract(Name = "Add1")]
    double Add(int ip);
}

[ServiceContract]
public interface IContract2
{
    [OperationContract(Name = "Add2")]
    double Add(double ip);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top