-1
내 COM 구성 요소를 호스팅하고 IIS에서 시작할 때 WinForm을 사용했지만 테스트 도중에 VS에서 정상적으로 작동하지만 IIS에 게시 한 후에 예외가 발생하고 예외가 발생했습니다. 그런 다음 응용 프로그램 풀이 손상되었습니다. 처음에는 COM 등록과 관련 있다고 생각했지만 동일한 COM을 호출하는 테스트 winform 응용 프로그램을 작성하고 동일한 서버에서 올바르게 작동합니다.IIS 사용 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();
}
}
그냥 5 포인트. 나는 COM이 32 비트라고 생각하지만, 어떻게해야할지 모르겠다. –