Не удается создать экземпляр компонента COM на стороне сервера - PullRequest
0 голосов
/ 20 июля 2010

Я пытаюсь использовать MS IME на сервере, чтобы получить некоторую японскую информацию в приложении silverlight. Приложение обращается к серверу с помощью WCF, но при вызове CoCreateInstance для создания IFELanguage2 оно дает мне -2147467262. Тот же код, который я использую на сервере, на самом деле прекрасно работает в приложении WPF.

Вот код,

// ...omit
Guid imeGuid;
int errCode = Ole32.CLSIDFromString("MSIME.Japan", out imeGuid);
WinBase.CheckError(errCode);

Guid feLangIID = new Guid(Constants.IID_IFELanguage2);
IntPtr ppv;
errCode = Ole32.CoCreateInstance(imeGuid, IntPtr.Zero, Ole32.CLSCTX.CLSCTX_ALL, feLangIID, out ppv);
WinBase.CheckError(errCode);  // errCode is  2147467262
IFELanguage IfeLanguage = Marshal.GetTypedObjectForIUnknown(ppv, typeof(IFELanguage)) as IFELanguage;

errCode = IfeLanguage.Open();
WinBase.CheckError(errCode);
// ...omit

Нужно ли что-либо настраивать для использования MS IME на стороне сервера? Я запускаю приложение в следующей среде,
IIS7
.NET Framework 4.0
Windows 7 Pro 64 бит
VS2010

Заранее спасибо,
yokyo

1 Ответ

0 голосов
/ 20 июля 2010

После того, как я погуглил полдня, я понял, что еще немного. Моя проблема состояла в том, чтобы назвать com как MTA, поэтому после изменения, чтобы сделать поток STA для вызова com, CoCreateInstance больше не беспокоит меня.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...