Имам функция, която използвам, за да запазя word doc като html файл като част от уеб базиран преглед на документи. Той връща път към новосъздадения html файл, който след това се показва във вградена рамка. Поставих съдържанието му по-долу за справка.
Всичко това работи добре, когато стартирам уеб приложението от Visual Studio, но когато е инсталирано на IIS, то просто увисва. html файлът не е създаден.
Преди тази ситуация функцията би стигнала само до инстанциране на думата Application class; Получавах грешка по следния начин:
„Извличането на фабриката за COM клас за компонент {Guid-thing} не бе успешно поради следната грешка...“
Това беше разрешено, като отидете на Component Services --> Computers --> My Computer --> DCOM Config. Отидох до свойствата за защита на Документа на Microsoft Word 97 - 2003 и дадох разрешенията Локално стартиране и Локално активиране на потребителя/мрежата на IIS Обслужване. По-късно дадох и разрешения за Отдалечено стартиране и Отдалечено активиране.
Когато се опитам да прегледам документ, виждам в диспечера на задачите, под процеси, че WINWORD.exe е отворен от мрежовата услуга. Така че става по-далеч от преди. Но сега ми се струва, че или виси на редовете wordApp.Documents.Open или doc.SaveAs. Оставих го да работи до десет минути в точки, но никога не се достига време за изчакване или се показва грешка.
Уеб приложението е инсталирано в IIS 6, на Windows Server 2003 SP2
private string WordToHTML(string filePath)
{
string returnPath = String.Empty;
Microsoft.Office.Interop.Word.Document doc = null;
object missing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Application wordApp = null;
try
{
// Initialise
string serverFolderPath = Path.GetDirectoryName(filePath);
string fileToOpen = filePath;
string FileToSave = Path.GetFileNameWithoutExtension(fileToOpen) + ".html";
// Open Word
wordApp = new Microsoft.Office.Interop.Word.Application();
// Get Doc
doc = wordApp.Documents.Open(fileToOpen, ref missing, true, ref missing,
ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing,
ref missing, false, ref missing, ref missing,
ref missing, ref missing);
// If html file already exists, delete it
returnPath = String.Format("{0}\\{1}", serverFolderPath, FileToSave);
if (File.Exists(returnPath))
File.Delete(returnPath);
// Save as HTML document
doc.SaveAs(returnPath, 10, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing);
}
catch (Exception ex)
{
throw ex;
}
finally
{
doc.Close(ref missing, ref missing, ref missing);
wordApp.Quit(ref missing, ref missing, ref missing);
}
return returnPath;
}