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 ビット アプリケーションで動作するように Web サイトを設定しました

しかし、何もこの問題を解決できませんでした。

pInvoke を使用して dll を手動でインポートする可能性について考えましたが、成功しませんでした...

私はよくグーグルで検索しましたが、オートデスクに問い合わせてみましたが成功しませんでした。

サーバー上で Inventor を起動して、動作するかどうかを確認したところ、完全に動作しました!

誰か助けてくれませんか?

親切な返信ありがとうございます!

エマヌエーレ

4

1 に答える 1

0

Web ページがサービスとして実行されており、Inventor がユーザー レベルのアプリケーションとして実行されているという単純な理由から、これが機能するとは思いません。次のことを想像してください。Web ページが 100 のクライアント/ブラウザから要求され、アプリが Inventor を 100 回起動します。しかしそれ以上に、Web ページはユーザーレベルではありません。

Web ページがリクエストを受信し (たとえば、.ipt ファイルを作成するとします)、アクションを実行する必要があるという記録を作成します (たとえば、指示やデータベース エントリを含む新しい .txt ファイル)。 Windows サービスが要求を検出し、Inventor を起動して処理します。この場合、Web ページによってリクエストが配置され、後で処理されるキューがあります。

しかし、これは EULA ではサポートも許可もされていないと言わざるを得ません。確認してください。

于 2015-07-02T11:45:03.743 に答える