Проблема с System.Runtime.InteropServices.COMException

305
23 августа 2017, 14:50

Всем доброго времени суток. Суть: Необходимо запустить скрипт COM приложения, по кнопке с сайта.

JS (отправляем html):

 $.ajax({
    url: "test.aspx/Start",
    datatype: "json",
    cache: false,
    async: true,
    contentType: "application/json; charset=utf-8",
    method: "POST",
    data: JSON.stringify({ "HTMLString": str }),               
    success: function (data) {           
        if (data.d.length > 0) {
            ShowMessage(data.d, "error");
        }
    }
}); return false;

Test.aspx:

    [System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json)]
    public static string Start(string HTMLString)
    {
        bool IsInstalled = Handlers.CheckIsInstalled();
        string result = "";
        if (IsInstalled)
        {
            string filePath = Path.GetTempPath() + "\\" + fileName;
            // Создадим документ в темп пользователя
            Handlers.ConvertToPDF(HTMLString, filePath, true);
            string AppProgId = "SBLogon.LoginPoint";
            Type LoginPointType = Type.GetTypeFromProgID(AppProgId);
            dynamic LoginPoint = Activator.CreateInstance(LoginPointType);
            dynamic App = LoginPoint.GetApplication("ServerName=STEST;         
                                                        DBName=DBTEST;
                                                      UserName=;Password=");
            dynamic Src = App.ScriptFactory.GetObjectByName("test");
            Src.Params.SetVar("document", filePath);
            Src.Execute();
        }
        else
        {
            result = "не установлено ПО...";
        }

        return result;
    }

Проблема: Суть в том, что с локального сервера все работает как мне надо - запускается и тд. Но стоит запустить на нормальном сервере, то по кнопке - тишина. А в отладчике исключение:

ExceptionType: "System.Runtime.InteropServices.COMException"
Message: "Вход в систему не произведен"
StackTrace:"   at System.Dynamic.ComRuntimeHelpers.CheckThrowException(Int32 
hresult, ExcepInfo& excepInfo, UInt32 argErr, String message)
↵   at CallSite.Target(Closure , CallSite , ComObject , String )
↵   at CallSite.Target(Closure , CallSite , Object , String )
↵   at SpecodInfo.Test.Start(String HTMLString)

Строка проблемная:

dynamic App = LoginPoint.GetApplication("ServerName=STEST;         
                                            DBName=DBTEST;
                                          UserName=;Password=");    

Не могу найти причину, может кто сталкивался подскажите непутевому, рад любой помощи, а то уже мозг сломал)

Answer 1

В VS ваши запросы обрабатываются в контексте безопасности вашего пользователя, который у вас является пользователем домена.Поэтому в локальном сервере все гладко.А сервеные приложения подобно IIS по умолчанию вовсе не запускаются от имени доменных пользователей,скорее всего именно в непрошедшей аутентификации IIS-а в домене и проблема.
Здесь описаны возможные варианты решения возникшей у вас проблемы.

Оригинал этой статьи

READ ALSO
С# - mySQL и .NET Core 2.0

С# - mySQL и .NET Core 2.0

Всем привет! Есть нужна использовать БД в проектеNET Core 2

323
Развернуть два проекта на одном домене

Развернуть два проекта на одном домене

Добрый день, подскажите пожалуйста возможно ли разместить два AspNet Core проекта на одном домене? Есть проект основного сайта (site

229
Textbox как считать значение

Textbox как считать значение

Есть вебформа с текстбоксом и кнопкойТекст бокс заполняю так :

287
Task.IsComplited до реального завершения задачи

Task.IsComplited до реального завершения задачи

Создаю кучу Task - в каждом игровой цикл, помещаю их в List<Task>:

173