2011-10-21 104 views
0

我正在通過Asp.Net開發一些頁面,其中包含打開和閱讀一些MS Word文檔,它在我自己的本地主機上運行良好,但是當我將文件在wwwroot下並運行Inetmgr頁面出現此錯誤:在IIS 7中打開MS Word文檔時出現錯誤,

此命令不可用,因爲沒有文檔處於打開狀態。

您認爲問題出在哪裏?我應該在IIS管理器中添加一些引用或編輯一些設置以使用MS Word文檔?怎麼樣?謝謝:)

,這是如何我試圖打開和讀取文檔稱爲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; 
     } 

    } 
+2

你如何打開你的文檔?你可以顯示代碼嗎? –

+0

我要麼從用戶處理文檔或處理服務器上的一些已知文件 – ePezhman

回答

1

通常情況下,運行Web進程的帳戶沒有足夠的操作系統權限來運行像Word一樣的GUI應用程序。在大多數情況下,這可能是一件好事,因爲一個人不應該從Web進程運行GUI應用程序。當Word彈出阻止整個站點的模態對話框,並且沒有人可以訪問Web服務器並單擊確定時會發生什麼情況。如果你必須閱讀文檔,庫是一個更好的解決方案。

所有這一切說,使用這裏的詞使零感 - 你只是從文件加載一些停用詞。純文本將同樣有效,並且更容易處理。

+0

用戶上傳的文字文件是什麼?我試圖打開它們 – ePezhman

+0

請參閱第一段,使用適當的庫。 –

+0

謝謝,我試過DocX自由,但它只適用於Word 2007,你認爲我可以添加權限讓它使用word嗎?我正在開發一些原型,沒有錢購買像Aspose這樣的圖書館的許可證。 – ePezhman

0
string filePath = "http://localhost:8777/stopwords.doc"; 

這不是一個有效的文件路徑。

嘗試把Web應用程序文件夾內的文件,例如創建一個名爲您已部署ASP.NET應用程序,然後得到這樣的文件路徑的地方里面WordDocs文件夾:

string filePath = Server.MapthPath("~/WordDocs/stopwords.doc"); 

if(File.Exists(filePath)) 
{ 
    object file = filePath; 
    object nullobj = System.Reflection.Missing.Value; 
    ... 
} 
+0

謝謝,但我改成這樣:string filePath = HttpContext.Current.Server.MapPath(「〜/ stopwords.doc」);我仍然得到相同的錯誤 – ePezhman

+0

是File.Exists傳遞? –

+0

是的,該文件位於根文件夾 – ePezhman