У меня возникли некоторые проблемы с настроенным веб-сайтом ASP.NET, и его очень трудно отладить.
Справочная информация:
На моем веб-сайте есть страница, которая позволяетпользователь загружает один или несколько документов Microsoft Word.Затем пользователь может нажать кнопку, и код должен открыть документ (ы), посчитать слова, а затем вернуть количество слов в таблице.
Это прекрасно работает, когда я нахожусь вVisual Studio запускает отладчик, однако, когда я пытаюсь сделать это через Интернет с другого компьютера, я получаю сообщение об ошибке.
Вот некоторый код.Я попытался максимально упростить его.
// List of int's to hold the number of words in each document
List<int> words = new List<int>();
// Loop through the files that the user selected
// (The files have already been uploaded, and now their path is in "lstFileBox")
for (int i = 0; i < this.lstFileBox.Items.Count; i++)
{
try
{
String file = this.lstFileBox.Items[i].Text;
// MicrosoftWordOperations is a custom class
MicrosoftWordOperations wordOps = new MicrosoftWordOperations(file);
String contents = wordOps.GetContents();
int numWords = wordOps.CountWords(contents);
// Add number of words to my list
words.Add(numWords);
// Delete the uploaded file, which was stored in a temporary location
if (System.IO.File.Exists(file))
System.IO.File.Delete(file);
}
catch (Exception e)
{
}
}
// ...
// Then add number of words to a table
// ...
А код MicrosoftWordOperations
довольно прост:
public class MicrosoftWordOperations
{
private String _file;
public MicrosoftWordOperations(String file)
{
this._file = file;
}
public String GetContents()
{
object fileName = (object)this._file;
object missing = System.Reflection.Missing.Value;
Word.Application wordObject = new Word.Application();
Word.Document wordDocument = wordObject.Documents.Open(
ref fileName, 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, ref missing);
Word.Document activeDocument = wordObject.ActiveDocument;
String fileContents = activeDocument.Content.Text;
wordDocument.Close(ref missing, ref missing, ref missing);
return fileContents;
}
public int CountWords(String text)
{
MatchCollection collection = Regex.Matches(text, @"[\S]+");
return collection.Count;
}
}
Редактировать:
Я смог выполнить некоторую базовую отладку, и вот исключение, которое попадает в первый блок кода:
System.UnauthorizedAccessException: получение фабрики классов COM для компонента с CLSID {000209FF-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: 80070005 Доступ запрещен.(Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED)).в MicrosoftWordOperations.GetContents () в [путь] \ MicrosoftWordOperations.cs: строка 26 в Content_WordCounter.CountWords () в [путь] \ WordCounter.aspx.cs: строка 69
Редактировать:
MSWord установлен на сервере.
Редактировать:
Строка 26: Word.Application wordObject = new Word.Application();
Строка 69: String contents = wordOps.GetContents();