1

我正在尝试基于 Autodesk Inventor 引擎开发一个非常简单的 Web 应用程序。

我正在使用 Visual Studio 2010 和 Inventor 2015 在 Win7 64 位上进行开发,并且它在调试时一切正常,但是当我在 Web 服务器上发布时出现错误:

HRESULT:0x800401F3(CO_E_CLASSSTRING)

和消息

接口字符串无效

我收到错误的C# 代码行是:

Inventor.Application _invApp = (Inventor.Application)Marshal.GetActiveObject("Inventor.Application");

我的测试的完整代码如下:

using Inventor;
using System.Runtime.InteropServices;
namespace web_debug_cs
{
    public partial class debug_runinventor : Ssytem.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e) { startInventorApplication(); }
        private void startInventorApplication()
        {
            string sDebug = string.Empty;
            try
            {
                Inventor.Application _invetorApp = (Inventor.Application)Marshal.GetActiveObject("Inventor.Application");
                sDebug = "Success!!!";
            }
            catch (Exception ex) { sDebug = "UNSUCCESS!<br />" + ex.Message; }
            lblAnswer.Text = sDebug;
        }
    }
}

我直接从 Inventor 2015 指南中获得此代码,但在本地机器上(重复)一切正常,但在服务器上却不行。

  • 我检查了权限(每个人:完全控制)
  • 我在 system32 和 SysWOW64 上都使用 regsvr32 手动注册(无法注册)
  • 我在框架 32 和 64 上注册了 regasm(注册成功!)
  • 我将网站设置为使用 32 位应用程序

但没有什么可以解决这个问题。

我考虑过使用 pInvoke 手动导入 dll的可能性,但没有成功......

我用谷歌搜索了很多,我试图问 Autodesk 没有成功。

我在服务器上启动了 Inventor 以验证它是否工作正常,并且工作正常!

任何人都可以尝试帮助我吗?

提前感谢您的任何回复!

伊曼纽尔

4

1 回答 1

0

由于一个简单的原因,我不希望这会起作用:网页作为服务运行,而 Inventor 作为用户级应用程序运行。想象一下:100 个客户端/浏览器请求该网页,您的应用程序将启动 Inventor 100 次。但更重要的是,网页不在用户级别。

最好的工作机会是:您的网页收到一个请求(比如说创建一个 .ipt 文件),创建一个必须执行该操作的记录(例如,一个带有说明或数据库条目的新 .txt 文件),一个Windows 服务检测到请求并启动 Inventor 来处理它。在这种情况下,您将有一个队列,其中请求由您的网页放置,但稍后处理。

但我必须说 EULA 不支持也不允许这样做,请查看它。

于 2015-07-02T11:45:03.743 回答