Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 展开后未创建Autocad实例_C#_Asp.net_Iis 7_Marshalling_Autocad - Fatal编程技术网

C# 展开后未创建Autocad实例

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

我遇到一个关于使用C#运行autocad应用程序的问题。由于我是初学者,我的大部分代码都是从网上复制粘贴的

问题是我正在使用c#开发一个web应用程序,它将在运行时创建一个实例化的autocad实例。在开发服务器和本地IIS服务器上,一切都很顺利。但是当我在服务器(WindowsServer8)上部署web应用程序时,我得到了以下错误

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不允许非可视交互