无法在服务器端创建COM组件的实例

时间:2010-07-20 02:44:44

标签: asp.net wcf iis-7 com-interop

我正在尝试在服务器上使用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专业版64位
VS2010

提前致谢,
yokyo

1 个答案:

答案 0 :(得分:0)

谷歌搜索了半天后,我得到了更多的一点。我的问题是将一个com称为MTA,所以在更改为使一个STA线程调用com后,CoCreateInstance不再打扰我了。

由于