powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / P/Invoke vs IIS7
19 сообщений из 19, страница 1 из 1
P/Invoke vs IIS7
    #39460422
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, коллеги!
Опять проблема с P/Invoke, помогите плиз.
На локальной машине все работает.
После публикации перестает дышать, проверил права пользователя, доступность файлов ничего не помогло.
Поиск ошибки осложняется тем, что Debug не залезает внутрь содержимого DLL, и соответственно где произошла ошибка очень трудно узнать.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
        [DllImport(@"C:\inetpub\wwwroot\OilCalc\LazuritCppDll.dll", CallingConvention = CallingConvention.StdCall)]
        private static extern int getPLAST([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] ref PLAST[] p,
                                   ref int c,
                                   [MarshalAs(UnmanagedType.LPStr)] string modelPath,
                                   ref int errorCode);

        public List<Plast> getData(string modelPath, int limit = 0)
        {
            // Извлечение пластов
            PLAST[] LTplasts = new PLAST[5];
            int c = 0;
            int errorCode = 0;
            getPLAST(ref LTplasts, ref c, modelPath, ref errorCode);

            // Присвоение данных 
            List<Plast> Plasts = new List<Plast>();
            int i = 1;
            foreach (PLAST p in LTplasts)
            {
                Plasts.Add(new Plast
                {
                    Id = p.id,
                    Name = p.name
                });
                if (i == limit) { break; }
                i++;
            }

            return Plasts;
        }




Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
            string modelPath = LTModels.Find(x => x.Name == Session["ModelName"].ToString()).Path;
            plasts = plastSearch.getData(modelPath); // тут пробовал закоментарить

            Plast plast = new Plast();
            plast.Id = 1;
            plast.Name = modelPath;
            // plasts.Add(plast); если раскоментарить, то работает

            return PartialView(plasts.ToPagedList(pageNumber, pageSize));
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39462445
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, коллеги!

В общем решил просто тыкаться на все подряд пока не найду ответ.
Для начала решил добавить в проект DLL-ку на прямую из проекта С++.
Делаю так:
Правой кнопкой-->Добавить существующий файл-->Выбираю нужный файл-->Добавить как связь.
Потом меню свойство ссылки Копировать в выходной каталог-->Копировать более позднюю версию.
При запуске проекта получаю ошибку(см. рис.)
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39462508
Vladimir A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipok,
to add dll you need to add reference to dll to add file
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39462561
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Avadipok,
to add dll you need to add reference to dll to add file

Спасибо!
Создал ярлык к ДЛЛ-ке и добавил его точно так же как раньше.
Ошибка повторяется.
Или вы говорите чтобы я добавил ссылки на все файлы из папки Release?
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39464625
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понятия не имею, что есть LazuritCppDll.dll, но:

Явно установить на сервере и на локальной машине то, частью чего является LazuritCppDll.dll

Добавить путь к LazuritCppDll.dll в переменную окружения PATH

Из [DllImport("...")] убрать полный путь и оставить только имя DLL
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39469245
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучЯ понятия не имею, что есть LazuritCppDll.dll, но:

Явно установить на сервере и на локальной машине то, частью чего является LazuritCppDll.dll

Добавить путь к LazuritCppDll.dll в переменную окружения PATH

Из [DllImport("...")] убрать полный путь и оставить только имя DLL


Прошу прощения, времени не было испробовать.
На локальной машине таким методом не работает.
РАБОТАЕТ
Код: c#
1.
2.
3.
4.
5.
        [DllImport(@"C:\inetpub\wwwroot\OilCalc\LazuritCppDll.dll", CallingConvention = CallingConvention.StdCall)]
        private static extern int getPLAST([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] ref PLAST[] p,
                                   ref int c,
                                   [MarshalAs(UnmanagedType.LPStr)] string modelPath,
                                   ref int errorCode);



НЕ РАБОТАЕТ
Код: c#
1.
2.
3.
4.
5.
6.
7.
path: (;C:\inetpub\wwwroot\OilCalc) (;C:\inetpub\wwwroot\OilCalc\) оба варианта пробовал

        [DllImport("LazuritCppDll.dll", CallingConvention = CallingConvention.StdCall)] /*@"LazuritCppDll.dll"*/
        private static extern int getPLAST([MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] ref PLAST[] p,
                                   ref int c,
                                   [MarshalAs(UnmanagedType.LPStr)] string modelPath,
                                   ref int errorCode);




Вызвано исключение: "Microsoft.CSharp.RuntimeBinder.RuntimeBinderException" в Microsoft.CSharp.dll
Вызвано исключение: "System.DllNotFoundException" в OilCalc.Domain.dll
Вызвано исключение: "System.DllNotFoundException" в System.Web.Mvc.dll
Вызвано исключение: "System.DllNotFoundException" в System.Web.Mvc.dll
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39470988
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полный текст исключения, пожалуйста.
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39481420
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучПолный текст исключения, пожалуйста.

Добрый день!
Я был в отпуске, поэтому так долго не мог ответить.
Хотел сегодня повторить ошибку, но ошибка не повторяется. )))
Видимо помогла перезагрузка машины.
Спасибо, все работает на локальной машине.
Сегодня буду пытаться на сервере осуществить.
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39481440
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НахлобучПолный текст исключения, пожалуйста.

На удаленном сервере к сожалению не работает. ((
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39481476
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Windows Server 2008 R2 Standard 64
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39481481
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipokНахлобучПолный текст исключения, пожалуйста.

На удаленном сервере к сожалению не работает. ((
Дак Вы его тоже перезагрузите, чтобы переменная PATH подсосалась :)
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39481485
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAvadipokпропущено...


На удаленном сервере к сожалению не работает. ((
Дак Вы его тоже перезагрузите, чтобы переменная PATH подсосалась :)

Раз десять перезагрузил, с каждым изменением на сервере.
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39481494
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipok,

тогда ищите ошибку в логах сервера, а не в консоли браузера, ну или ткните в консоли на запрос и посмотрите что в Response, возможно там полный текст ошибки
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39482488
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чет не могу победить, не знаю даже что делать. ((
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39484123
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadipok,

В настройках Application Pool'а на сервере какая версия .NET Framework стоит?

Если совсем безвыходная ситуация -- пиши на почту, помогу через TeamViewer.
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39485281
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобучvadipok,

В настройках Application Pool'а на сервере какая версия .NET Framework стоит?

Если совсем безвыходная ситуация -- пиши на почту, помогу через TeamViewer.



У нас тут помешаны на безопасности, вряд ли разрешат.
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39485283
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А у меня стоит 4.5.2.
Снести на сервере, и установить нужную версию?
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39486333
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v4.0.NNN правильная, ничего не сноси.

Почему Классический?
...
Рейтинг: 0 / 0
P/Invoke vs IIS7
    #39487838
vadipok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобучv4.0.NNN правильная, ничего не сноси.

Почему Классический?

Я сейчас опять в отпуске.
Честно говоря не знаю, я там колдовал и заработала.
Есть же золотое правило программиста, если работает, то не трогай.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / P/Invoke vs IIS7
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]