Ошибка OperationBehaviorAttribute при запуске svcutil.exe в службе WCF - PullRequest
2 голосов
/ 24 февраля 2011

Я получаю очень странную ошибку при попытке запустить svcutil.exe в службе WCF.

«Атрибут OperationBehaviorAttribute может работать только на классе обслуживания»

[InvalidOperationException]: OperationBehaviorAttribute может идти только в классе обслуживания, его нельзя поместить в интерфейс ServiceContract. Метод 'EditProduct' для типа 'IProductWCF' нарушает это. "

Я вставил свой код ниже, и если кто-нибудь сможет пролить свет на это, я буду очень признателен.

Я должен отметить, что он работает на каждом методе, кроме «EditOpportunityProductTypes»

Мой интерфейс:

namespace ProductWCF
{
    [ServiceContract]
    public interface IProductWCF
    {
        [OperationContract]
        string SayHello(AppointmentFeedback objAppointmentFeedback);

        [OperationContract]
        Boolean CreateAppointmentFeedback(AppointmentFeedback objAppointmentFeedback);

        [OperationContract]
        List<ExpiringContractType> GetOpportunityProductTypes(int opportunityId);

        [OperationBehavior]
        Boolean EditOpportunityProductTypes(List<ExpiringContractType> lstExpiringContractTypes, int opportunityId);
    }
}

Мое обслуживание:

namespace ProductWCF
{
    public class Service : IProductWCF
    {
        [OperationBehavior]
        public string SayHello(AppointmentFeedback objAppointmentFeedback)
        {
            return objAppointmentFeedback.Notes;
        }

        [OperationBehavior]
        public Boolean CreateAppointmentFeedback(AppointmentFeedback objAppointmentFeedback)
        {    
            ProductData.CRM.Objects.AppointmentFeedback objNewAppointmentFeedback = new AppointmentFeedback();    
            if (objNewAppointmentFeedback.Insert(objAppointmentFeedback.AppointmentId, objAppointmentFeedback.StarId, objAppointmentFeedback.AppointmentStatusId, objAppointmentFeedback.Notes, objAppointmentFeedback.Creator, objAppointmentFeedback.AttendeeName) > 0)
                return true;
            else
                return false;
        }

        [OperationBehavior]
        public List<ExpiringContractType> GetOpportunityProductTypes(int opportunityId)
        {    
            return OpportunityProductTypeMethods.GetOpportunityConnectionTypes(opportunityId);

        }

        [OperationBehavior]
        public Boolean EditOpportunityProductTypes(List<ExpiringContractType> lstExpiringContractTypes, int opportunityId)
        {
            return ProductData.CRM.Objects.OpportunityProductTypeMethods.UpdateOpportunityConnectionTypes(lstExpiringContractTypes, opportunityId);
        }
    }
}

1 Ответ

3 голосов
/ 24 февраля 2011

Вы украсили метод EditOpportunityProductTypes в интерфейсе атрибутом OperationBehavior:

 [OperationBehavior]
 Boolean EditOpportunityProductTypes(List lstExpiringContractTypes, int opportunityId);

Вы, вероятно, хотели использовать OperationContract там:

 [OperationContract]
 Boolean EditOpportunityProductTypes(List lstExpiringContractTypes, int opportunityId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...