C# 展开后未创建Autocad实例
我遇到一个关于使用C#运行autocad应用程序的问题。由于我是初学者,我的大部分代码都是从网上复制粘贴的 问题是我正在使用c#开发一个web应用程序,它将在运行时创建一个实例化的autocad实例。在开发服务器和本地IIS服务器上,一切都很顺利。但是当我在服务器(WindowsServer8)上部署web应用程序时,我得到了以下错误C# 展开后未创建Autocad实例,c#,asp.net,iis-7,marshalling,autocad,C#,Asp.net,Iis 7,Marshalling,Autocad,我遇到一个关于使用C#运行autocad应用程序的问题。由于我是初学者,我的大部分代码都是从网上复制粘贴的 问题是我正在使用c#开发一个web应用程序,它将在运行时创建一个实例化的autocad实例。在开发服务器和本地IIS服务器上,一切都很顺利。但是当我在服务器(WindowsServer8)上部署web应用程序时,我得到了以下错误 Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) at
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 server 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)。我敢肯定,要想实现这一点,您必须从ASP.NET端实例化一个新会话。在使用可视化互操作时,运行希望从ASP.NET直接进行用户交互的应用程序实例并不那么简单 您可能必须使用windows窗体或WPF应用程序才能使用AutoCAD。问题可能是AutoCAD.Application interop不允许非可视交互