Служба wcf, размещенная на iis7: не помещайте dll в папку system32 - PullRequest
0 голосов
/ 02 марта 2012

У меня есть служба wcf, ссылающаяся на dll.Единственный способ, которым это работает, - это поместить dll в папку% windir% / system32.

То, что я пробовал

  • попытался переключиться между iis express, сервером разработки и iis (но это не имеет значения)
  • поместив dll в папку bin и / или другие папки приложения
  • пытается использовать утилиту "regsvr32", но dll не является com dll, поэтому он не работает. (без точки входа ddl)
  • Это не dll .NET, поэтому я не думаю, что GAC может бытьманипулировал, чтобы работать с этим
  • , играемым с переменной системного пути без какого-либо успеха

Что я на самом деле хочу Более простой метод для доступа к dll, поэтому мне не нужно помещать dll в system32, а содержать его в папке приложения и получать к нему доступ оттуда.

Чего мне не хватает?


РЕДАКТИРОВАТЬ: Я нашел это опубликовать интересные и похожие, но опять же, он также использует метод system32, который не подходит.

1 Ответ

1 голос
/ 02 марта 2012

Если это собственная библиотека win32, вы можете «предварительно загрузить» ее из известного местоположения, используя pinvoked LoadLibrary, передавая полный путь вашей библиотеки в качестве параметра, где-то в начале конвейера обработки.

Когда вызывается любой метод из библиотеки, отмеченной DllImport, среда выполнения попытается загрузить библиотеку (и упадет, потому что dll не может быть найдена), но, поскольку вы предварительно загрузили ее раньше, загрузка будет выполнена успешно (загрузчик проверяет имя файла библиотеки, не обращает внимания на каталог, из которого загружается библиотека).

...