IIS使用COM得到Class未注册的异常

时间:2017-04-20 07:13:27

标签: iis com activex ocx

我使用WinForm来托管我的COM组件并在IIS中启动它,它在测试期间在VS中运行良好,但在我发布到IIS之后,我得到了#34;类没有注册"异常,然后应用程序池崩溃。 起初,我认为它与COM注册有关,但我编写了一个测试winform应用程序来调用相同的COM,它在同一台服务器上工作正常。

任何?

class FaceScannerServerHost : Form
{
    public FaceScannerServerHost(Control control, bool hidden = false)
    {
        if (control.IsHandleCreated) throw new InvalidOperationException("control already committed to wrong thread");
        if (hidden) this.Opacity = 0;
        this.Hide();
        this.ShowInTaskbar = false;

        using (initDone = new ManualResetEvent(false))
        {
            thread = new Thread((_) =>
            {
                try
                {
                    //COM control
                    AxC_FaceServerSdk axc = (AxC_FaceServerSdk)control;
                    this.Controls.Add(axc);

                    //crashed here
                    Application.Run(this);

                }
                catch (Exception exp)
                {
                    TraceLog.Debug("AxServer", exp.Message);
                }
            });
            thread.IsBackground = true;
            thread.SetApartmentState(ApartmentState.STA);

            thread.Start();
            initDone.WaitOne();
        }
    }

1 个答案:

答案 0 :(得分:0)

选项:

  
      
  1. asp.net注册到你的iis?
  2.   
  3. 检查应用程序池中的框架。
  4.   
  5. 启用目录浏览。
  6.   
  7. 确保包含所有dll。
  8.   
  9. 检查32或64位服务器。
  10.