2014-03-19 4 views
0

C#을 사용하여 AutoCAD 응용 프로그램을 실행하는 것과 관련하여 문제가 발생했습니다. 내가 초급자이기 때문에 대부분의 코드는 그물에서 붙여 넣은 사본입니다.배포 후 Autocad 인스턴스가 생성되지 않음

문제는 런타임에 인스턴스 autocad 인스턴스를 생성하는 C#을 사용하여 웹 응용 프로그램을 개발 중입니다. 모든 것은 개발 서버뿐만 아니라 내 로컬 IIS 서버에서도 잘 처리됩니다. 하지만 난 서버에서 웹 응용 프로그램 (윈도우 서버 8) 내가 아래의 오류

Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) 
at System.Runtime.InteropServices.Marshal.GetActiveObject(Guid& rclsid, IntPtr reserved, Object& ppunk) 
at System.Runtime.InteropServices.Marshal.GetActiveObject(String progID) 
at DQMF.CDQMF.createAacdApplicationInstance(String progID) 

내가 때문에 일부 권한 문제로 생각을 얻고을 배포하고시. 내 로컬 컴퓨터의 autocad 인스턴스가 시스템의 권한으로 실행 중이고 서버 (Windows 서버 8)에서 관리 권한으로 (개발 서버로) 실행 중입니다.

AcadApplication createAacdApplicationInstance(string progID) 
    { 
     AcadApplication app = null; 
     try 
     { 
      app = (AcadApplication)Marshal.GetActiveObject(progID); 
     } 
     catch (Exception e) 
     { 
      try 
      { 
       Type acType = Type.GetTypeFromProgID(progID); 
       app = (AcadApplication)Activator.CreateInstance(acType, true); 
       app.Visible = false; 
       app.Width = 1; 
       app.Height = 1; 
       app.WindowState = AutoCAD.AcWindowState.acMin; 
       app.Visible = false; 
      } 
      catch (Exception ex) 
      { 
       //File.AppendAllText("D:/test/DQMS_log.txt", ex.Message+" progID is: "+progID+Environment.NewLine+"app caption: "+app.Caption); 
      } 
     } 
     return app; 
    } 

당신은 ASP.NET 프로세스가 별도의 계정에서 실행되며 완전히 다른 실행중인 개체 테이블 (ROT)을 가지고 있기 때문에 내가

답변

0

귀하의 마샬링이 실패를 줄 수있는 몇 가지 자세한 내용을합니다. 이 기능을 사용하려면 ASP.NET 측에서 새 세션을 생성해야합니다.

0

시각적 인 인터셉트로 작업 할 때 asp.net에서 직접적인 사용자 상호 작용을 기대하는 응용 프로그램의 인스턴스를 실행하는 것은 쉽지 않습니다.

AutoCAD에서 작업하려면 Windows 양식 또는 WPF 응용 프로그램을 사용해야 할 수도 있습니다. AutoCAD.Application interop이 비 시각적 상호 작용을 허용하지 않을 수 있습니다.