Reputation: 4010
I'm developing some pages by Asp.Net which contains opening and reading some MS word docs, it works well by my VS 2010 on its own localhost but when I put the files under wwwroot and run the pages by Inetmgr I get this error :
This command is not available because no document is open.
where do you think the problem is? shall I add some references or edit some setting in my IIS manager to work with MS word docs? how? thanks :)
and this is how I'm trying to open and read a doc called stopwords.doc
static extractor()
{
try
{
ApplicationClass wordApp = new ApplicationClass();
string[] words;
char[] delimiterChars = { ' ', ',', '.', '\r', '\t', '\n' };
string filePath = "http://localhost:8777/stopwords.doc";
object file = filePath;
object nullobj = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Document doc = wordApp.Documents.Open(ref file,
ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj,
ref nullobj);
Microsoft.Office.Interop.Word.Document doc1 = wordApp.ActiveDocument;
string m_Content = doc1.Content.Text;
doc.Close(ref nullobj, ref nullobj, ref nullobj);
if (m_Content != null)
{
words = m_Content.Split(delimiterChars);
foreach (string s in words)
{
if (!stopwords.ContainsKey(s))
stopwords.Add(s, s);
}
}
}
catch (Exception)
{
throw;
}
}
Upvotes: 0
Views: 3325
Reputation: 15663
Typically the accounts running web processes don't have enough os permissions to run GUI apps like Word. This is probably a good thing in most cases as one really shouldn't run GUI apps from web processes. What happens when word springs a modal dialog that blocks the entire site and no one is available to visit the web server and click OK. If you must read word docs, a library is a much better solution.
All that said, using word here makes zero sense -- you are just loading some stop words from a file. Plain text would be just as effective and vastly easier to deal with.
Upvotes: 1
Reputation: 44605
string filePath = "http://localhost:8777/stopwords.doc";
this is not a valid filepath.
try to put the file inside the web application folder, for example create a folder called WordDocs inside the place where you deployed your ASP.NET application then get the file path like this:
string filePath = Server.MapthPath("~/WordDocs/stopwords.doc");
if(File.Exists(filePath))
{
object file = filePath;
object nullobj = System.Reflection.Missing.Value;
...
}
Upvotes: 0