2

ASP.NETを使用してMATLAB関数のWebユーザーインターフェイスを開発しています。私はデモの勉強から始めて、そのような問題にこだわっています。

MATLAB 2010a、ターゲットフレームワーク-3.5のdeploytoolを使用してMyComponent.dllアセンブリを作成しました。このコンポーネントには、図を返す1つの関数GetKnot()があります。

function df = getKnot()
    f = figure('Visible', 'off');
    knot;
    df = webfigure(f);
    close(f);
end

次に、Visual Studio 2008 sp1で、1ページのDefault.aspxのみを使用して単純なWebアプリを作成しました。MWArray.dll、WebFiguresService.dll、およびMyComponent.dllへの参照を追加しました。codeBehindは次のとおりです。

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MyComponent;
using MathWorks.MATLAB.NET.WebFigures;

namespace MATLAB_WebApplication
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            var myComponentClass = new MyComponentClass();
            var x = myComponentClass.getKnot();
            WebFigureControl1.WebFigure = new WebFigure();
        }
    }
}

このページをVisualStudioの開発Webサーバーで実行すると、すべてが正常に機能します。

しかし、Win7x32で実行されているローカルのiis7.5にWebfigureを展開しようとすると、iisアプリプールがクラッシュします。システムイベントログに「プロセスサービングアプリケーションプール「Classic.NETAppPool」でWindowsプロセスアクティベーションサービスとの致命的な通信エラーが発生しました。プロセスIDは「3676」でした。データフィールドにエラー番号6D000780が含まれています」というエントリがあります。これは、MyComponentがインスタンス化されているときに発生します。

IISに移行したときに何を忘れることができますか?

魔方陣コンソールアプリケーションのような他の例は完璧に実行され、すべてのmatlabコンポーネントがインスタンス化されますが、IIS環境では実行されません。

編集:Windows7とMATLAB2009bを使用して仮想マシンを展開し、同じ例を試しました。すべてが正常に動作します。:(。多分それはMATLAB2010の問題ですか?

4

1 に答える 1

3

私はこれとまったく同じ問題に遭遇しました(MCRはWindows Server 2008でAppPoolsをクラッシュさせていました)。MCRとIIS7の間の問題のようです。Mathworksサポートに連絡した後、これはMCRのバグ(「NetworkService」AppPool IDのアクセス許可に関連する)が原因であると通知されました。私は次の提案を受けました:

この問題を回避するには、次の2つの手順のいずれかを使用できます。

  1. MATLAB_PREFDIRという名前の環境変数を作成し、NETWORKSERVICEが書き込みアクセス権を持つディレクトリを指すようにします。または、

  2. 「LocalSystem」IDで実行される新しいアプリケーションプールを作成します(アプリケーションプールの「詳細設定...」を参照)。次に、このアプリケーションプール(アプリケーションの「基本設定...」)を使用するようにアプリケーションを構成します。

2番目の提案を適用したところ、問題は解決しました。これが同じ問題にぶつかっている他の誰かに役立つことを願っています。

于 2011-01-14T21:45:04.790 に答える