Приложение ASP.NET зависает при доступе к компоненту ActiveX - PullRequest
0 голосов
/ 13 июля 2009

Мы используем картографический движок MapInfo MapX в нашем приложении ASP.NET. После переустановки сервера (Windows Server 2003 SP2) мы столкнулись со странной проблемой - веб-приложение зависает при доступе к экземпляру ActiveX.

Например:

 
MapXLib.Map _mapXMap =
    (MapXLib.Map)HttpContext.Current.Server.CreateObject("MapX.Map.5");
_mapXMap.MapUnit = MapXLib.MapUnitConstants.miUnitKilometer; // application hangs here

Однако код


MapXLib.Map _mapXMap =
    (MapXLib.Map)Activator.CreateInstance(Type.GetTypeFromProgID("MapX.Map.5"));
_mapXMap.MapUnit = MapXLib.MapUnitConstants.miUnitKilometer;

отлично работает в стандартном приложении Windows.

Я думаю, что проблема связана с COM и ASP.NET, потому что приложение работало нормально до переустановки сервера.

1 Ответ

0 голосов
/ 14 июля 2009

Проблема решена. Может быть, это кому-нибудь пригодится.

Итак, я запустил Process Monitor (sysinternals) и записал все события из w3wp.exe, когда мое приложение работает. Я заметил, что процесс w3wp.exe останавливается при попытке прочитать что-то из реестра Windows: HKEY_CLASSES_ROOT-> CLSID -> {xxx-xxx ...}. Открыл regedit - ну, этот узел содержит некоторую информацию о MapX.

После добавления права доступа «READ» к этому узлу в учетную запись сетевой службы (на которой запущен w3wp) приложение начало работать нормально.

...