Вопрос

Я разрабатываю веб-интерфейс пользователя для функций MATLAB с помощью ASP.NET.Я начал с изучения демо-версий и остановился на такой проблеме.

Я создал сборку MyComponent.dll с помощью DeployTool из MATLAB 2010a, целевая платформа — 3.5.Этот компонент имеет одну функцию GetKnot(), которая возвращает фигуру.

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

Затем я создал простое веб-приложение в Visual Studio 2008 SP1 только с одной страницей Default.aspx.Я добавил ссылки на MWArray.dll, WebFiguresService.dll и MyComponent.dll.Код позади:

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();
        }
    }
}

Когда я запускаю эту страницу на веб-сервере разработки Visual Studio - все в порядке, фигура работает.

Но когда я пытаюсь развернуть webfigure на своем локальном iis 7.5, который работает на Win7 x32, пул приложений iis выходит из строя.В журнале системных событий есть запись: «В процессе, обслуживающем пул приложений Classic .NET AppPool, произошла фатальная ошибка связи со службой активации процессов Windows».Идентификатор процесса был «3676».Поле данных содержит номер ошибки 6D000780".Это происходит, когда создается экземпляр MyComponent.

Что я мог забыть при переходе на IIS?

Другие примеры, такие как консольное приложение Magic Square, работают отлично, и каждый компонент Matlab создается, но не в среде IIS.

Редактировать:Я развернул виртуальную машину с Windows 7 и MATLAB 2009b и попробовал тот же пример.Все работает нормально.:(.Может быть, это проблема MATLAB 2010?

Это было полезно?

Решение

Я столкнулся с точно такой же проблемой (MCR приводил к сбою AppPools в Windows Server 2008).Похоже, это проблема между MCR и IIS 7.После обращения в службу поддержки Mathworks мне сообщили, что это вызвано ошибкой в ​​MCR (относящейся к разрешениям идентификатора AppPool "NetworkService").Я получил следующие предложения:

Чтобы обойти эту проблему, вы можете использовать один из следующих двух шагов:

  1. Создайте переменную среды с именем MATLAB_PREFDIR и позвольте ей указывать на каталог, к которому NETWORK SERVICE имеет доступ на запись.Или,

  2. Создайте новый пул приложений, который работает под идентификатором «LocalSystem» (см. раздел «Дополнительные настройки...» пула приложений).Затем настройте свое приложение для использования этого пула приложений («Основные настройки...» вашего приложения).

Я применил второе предложение, и оно решило мою проблему.Я надеюсь, что это поможет кому-то еще, столкнувшемуся с той же проблемой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top