Сервисная библиотека Wcf не работает с ServicedComponent

UserComponent не работает с сервисной библиотекой WCF. UserComponent работает в консольном приложении.

Я получаю сообщение об ошибке при запуске компонента в сервисной библиотеке WCF:

 System.Runtime.InteropServices.COMException: 'Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))'

Сейчас я немного выполнил поиск в Google, и мне сказали, что мне нужно сделать его целевой платформой x86. Но это не работает, когда я изменяю его на целевую платформу x86. А флажок Prefer 32-bit отключен в свойствах библиотеки служб.

 [ServiceContract]
    public interface IUser
    {
        [OperationContract]
        bool InsertUser(string username, string firstName, string lastName);

        [OperationContract]
        List<UserData> GetUsers();
    }


 public class User : IUser
    {
        public List<UserData> GetUsers()
        {
            UserComponent userComponent = new UserComponent();
            List<UserData> userDatas = new List<UserData>();
            List<QuoteEntities.User> users = userComponent.GetUsers();
            foreach (var user in users)
            {
                UserData userData = new UserData();
                userData.Firstname = user.FirstName;
                userData.ID = user.Id;
                userData.Lastname = user.LastName;
                userData.Username = user.UserName;
                userDatas.Add(userData);
            }
            return userDatas;
        }

        public bool InsertUser(string username, string firstName, string lastName)
        {
            UserComponent userComponent = new UserComponent();
            return userComponent.InsertUser(username, firstName, lastName);
        }
    }

 [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface MyQuoteAppComponentIUser
    {
        bool InsertUser(string username, string firstName, string lastName);
        List<QuoteEntities.User> GetUsers();
    }


    [Synchronization(SynchronizationOption.RequiresNew)]
    [EventTrackingEnabled]    
    [Transaction(TransactionOption.RequiresNew)]
    [JustInTimeActivation]
    public class UserComponent : ServicedComponent, MyQuoteAppComponentIUser
    {
        public Guid GetActivityId()
        {
            return ContextUtil.ActivityId;
        }

        public List<QuoteEntities.User> GetUsers()
        {
            UserDataAccess userDataAccess = new UserDataAccess();
            List<QuoteAppDAL.User> users = userDataAccess.GetUsers();
            List<QuoteEntities.User> usersToReturn = new List<QuoteEntities.User>();
            foreach (var user in users)
            {
                QuoteEntities.User user2 = new QuoteEntities.User();
                user2.FirstName = user.FirstName;
                user2.Id = user.Id;
                user2.LastName = user.LastName;
                user2.UserName = user.UserName;
                usersToReturn.Add(user2);
            }
            return usersToReturn;
        }

        public bool InsertUser(string username, string firstName, string lastName)
        {
            UserDataAccess userDataAccess = new UserDataAccess();
            return userDataAccess.InsertUser(username, firstName, lastName);
        }
    }

0 ответов

Другие вопросы по тегам