Сервисная библиотека 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);
}
}