2011-11-24 66 views
0

我正在開發應讀取XML文件的webpart。爲此,我創建了一個類,其中NodeValue()方法應該返回節點內的文本。如果使用控制檯應用程序進行測試,這可行,但是當我將此(讀取器類和自定義XML文件)添加到我的SharePoint項目並嘗試部署它時,我收到錯誤消息Web Part error: File Not Found。我嘗試更改文件屬性,以便將它添加到編譯版本中,但我似乎仍然無法指定文件的路徑。下面是讀取器類:如何將XML文件添加到SharePoint項目

using System; 
using System.Reflection; 
using System.IO; 
using System.Xml; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace OrgChartPart.WebPartCode 
{ 
class ReadXml 
{ 

    public string FilePath { get; set; } 

    public ReadXml() 
    { 
     FilePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)+"\\LAYOUTS\\config.xml"; 
    } 

    public string NodeValue(int pos) 
    { 
     if (pos <= 0) 
      return "invalid position!(this is not a node value)"; 

     XmlTextReader textReader = new XmlTextReader(FilePath); 

     int counter = 0; 

     while (counter != pos) 
     { 
      textReader.Read(); 
      if (textReader.NodeType.ToString() == "Text") 
       counter++; 
     } 
     return textReader.Value; 
    } 
} 
} 

這裏是網絡的一部分代碼,我實例化這個類來讀取文件的部分內容:

StringBuilder sb = new System.Text.StringBuilder(); 

....... 
      string position = null, link_type = null, link_color = null, 
       node_alignment = null, node_fill = null, node_color_style = null, hyperlinks = null; 

      ReadXml readXml = new ReadXml(); 

      sb.Append(@" 
........ 

我不知道如果我有麻煩識別文件的路徑,還是我需要提高權限才能訪問它?或者,也許當解決方案部署目錄結構改變,所以我指定了一個錯誤的路徑?你怎麼看? 在此先感謝

回答

0

嗯,我設法解決它..有點.. 我通過SharePoint API(在農場)添加了XML文件(或CSS或任何你想要的),之後,我能夠使用文件的虛擬路徑訪問文件(您可以使用Sharepoint設計管理器查看目錄結構並打開您的服務器場),

0

這絕對是SharePoint無法在指定路徑中找到該文件的問題。您可以將文件上傳到文檔庫並從那裏讀取。

我的猜測是 - 在上面的例子中,如果你的dll是基於bin的,代碼會嘗試從你的虛擬目錄的bin文件夾中生成一個物理路徑。

此外 - SPContext.Current.Web.Url +「_layouts」+「您的文件夾下的模板」+「配置文件名」也應該工作。

HTH, 尼廷Rastogi

0

如果你wnat保存設置來管理您的Web部件,可以提供這種這樣的方式。您可以將設置放置在web.config中,並以與標準ASP.NET應用程序相同的方式訪問它們。不過,我認爲這不是個好主意,我認爲最好使用SharePoint API來提供Web部件設置。 (幸運的是,設置啓用您的Web部件非常簡單)。 It’s good example使用SharePoint API

相關問題