2015-07-02 8 views
1

Я пытаюсь разработать очень простое веб-приложение на основе механизма Autodesk Inventor.Autodesk.Inventor.Interop.dll на WinServer 64-разрядный 2012 R2 - интерфейс не зарегистрирован

Я разрабатываю на Win7 64-разрядные с Visual Studio 2010 и Inventor 2015, и все это прекрасно работает на отладку, но когда я опубликовать на веб-сервере я получаю сообщение об ошибке:

HRESULT: 0x800401F3 (CO_E_CLASSSTRING)

и сообщение

interface string not valid

# строка кода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 руководства, но (повтор) на локальной машине все это хорошо, но не на сервере.

  • Я проверил разрешение (все: полный контроль)
  • Я незарегистрированный вручную с regsvr32 (невозможно зарегистрировать) как на system32 и SysWOW64
  • Я незарегистрированный на каркасе 32 и 64 с Regasm (регистрация успеха !)
  • Я установил веб-сайт для работы с 32-битным приложением

, но ничего не может решить эту проблему.

Я думал о возможности импорта вручную дллы с PInvoke, но без успеха ...

Я гугл много, я судимый попросить Autodesk без успеха.

Я запустил Inventor на сервере, чтобы проверить, работает ли он, и он отлично работает!

Может ли кто-нибудь попытаться мне помочь?

Заранее благодарим за любой ответ!

Emanuele

+0

Спасибо @Augusto за ваш ответ, это ясно ваше мнение, и я думаю, что вы правы, мое второе сомнение касалось этого вопроса, и вы меня ожидали. Но мое первое сомнение в том, почему при разработке на локальной машине он работает отлично? Возможно, потому что моя машина может разрешить вызов без использования службы IIS? Мое приложение должно работать в локальной интрасети, а не на общедоступном WebServer. –

+0

Скорее всего, когда вы запускаете отладку, ваша учетная запись Windows разрешает ее, как-то (извините, я не эксперт по разрешениям Win Server) –

+0

Спасибо за ваш ответ и подтверждение. Я согласен с вами в отношении различий между моей учетной записью Windows в развертывании и веб-учетной записью на сервере. –

ответ

0

Я не ожидаю, что это работает из-за простой причине: веб-страница работает как сервис, и работает Inventor в качестве приложения пользовательского уровня. Представьте себе следующее: веб-страница запрашивается 100 клиентами/браузерами, ваше приложение запустит Inventor 100 раз. Но более того, веб-страница не находится на уровне пользователя.

Лучший шанс для работы: ваша веб-страница получит запрос (предположим, создайте файл .ipt), создайте запись, в которой должно выполняться действие (например, новый .txt-файл с инструкциями или базой данных запись), службы Windows обнаруживают запрос и запускают Inventor для его обработки. В этом случае у вас будет очередь, где запросы размещаются на вашей веб-странице, но обрабатываются позже.

Но я должен сказать, что это не поддерживается и не разрешено в EULA, пожалуйста, просмотрите его.

 Смежные вопросы

  • Нет связанных вопросов^_^