Использование ifilters без установки, загрузка прямо из моего проекта
Мне нужно извлечь текст с помощью веб-приложения C# MVC. Я использую Ifilter. На рабочем сервере у меня нет установленного MS office или пакета фильтров. поэтому я добавил dll в свой проект и попытался вызвать их из локальных dll.
приложение работает на других компьютерах, но не запускается с сервера
Ниже приведены некоторые фрагменты кода, которые я использую.
это основано на C# IFilter код из codeproject
enter code here private static bool GetFilterDllAndClass(string ext, out string dllName, out string filterPersistClass)
{
if (!GetFilterDllAndClassFromCache(ext, out dllName, out filterPersistClass))
{
ext = ext.ToLower();
if (ext == ".docx" || ext == ".pptx" || ext == ".xlsx")
{
dllName = "offfiltx.dll";
if (ext == ".docx")
{
filterPersistClass = "{5A98B233-3C59-4B31-944C-0E560D85E6C3}";
}
else if (ext == ".pptx")
{
filterPersistClass = "{DDFE337F-4987-4EC8-BDE3-133FA63D5D85}";
}
else if (ext == ".xlsx")
{
filterPersistClass = "{F90DFE0C-CBDF-41FF-8598-EDD8F222A2C8}";
}
}
else if (ext == ".doc" || ext == ".ppt" || ext == ".xls")
{
dllName = "offfilt.dll";
filterPersistClass = "{64F1276A-7A68-4190-882C-5F14B7852019}";
}
else
{
string persistentHandlerClass;
persistentHandlerClass = GetPersistentHandlerClass(ext, true);
if (persistentHandlerClass != null)
{
GetFilterDllAndClassFromPersistentHandler(persistentHandlerClass,
out dllName, out filterPersistClass);
}
}
AddExtensionToCache(ext, dllName, filterPersistClass);
}
return (dllName!=null && filterPersistClass!=null);
}
Так что один из моих вопросов - фиксированный CLSID для DLL (это глобальное значение) или он меняется от системы к другой.