Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / P/Invoke vs IIS7 / 19 сообщений из 19, страница 1 из 1
26.05.2017, 13:51
    #39460422
vadipok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P/Invoke vs IIS7
Добрый день, коллеги!
Опять проблема с 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
30.05.2017, 15:51
    #39462445
vadipok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P/Invoke vs IIS7
Добрый день, коллеги!

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

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

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

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

Из [DllImport("...")] убрать полный путь и оставить только имя DLL
...
Рейтинг: 0 / 0
09.06.2017, 11:02
    #39469245
vadipok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P/Invoke vs IIS7
НахлобучЯ понятия не имею, что есть 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
13.06.2017, 14:41
    #39470988
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P/Invoke vs IIS7
Полный текст исключения, пожалуйста.
...
Рейтинг: 0 / 0
03.07.2017, 07:21
    #39481420
vadipok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
P/Invoke vs IIS7
НахлобучПолный текст исключения, пожалуйста.

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

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

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


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

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

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

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

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

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

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



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

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

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

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


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