我正在开发一个应该读取XML文件的webpart
。为此,我创建了一个类,其中NodeValue()
方法应返回节点内的文本。如果使用控制台应用程序进行测试,这确实有效,但是当我将此(读取器类和自定义XML文件)添加到我的SharePoint项目并尝试部署它时,我收到错误消息Web Part error: File Not Found
。我尝试更改文件属性,以便将其添加到编译版本,但我似乎仍然无法指定文件的路径。这是读者类:
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 :(得分:0)
这绝对是SharePoint无法在指定路径中找到文件的问题。您可以将文件上载到文档库并从那里读取。
我的猜测是 - 在上述情况下,如果您的dll是基于bin的,代码将尝试从您的虚拟目录的bin文件夹生成物理路径。
此外 - SPContext.Current.Web.Url +“_layouts”+“模板下的文件夹”+“配置文件名”也应该有效。
HTH, Nitin Rastogi
答案 1 :(得分:0)
如果您想保存设置来管理Web部件,您可以通过这种方式提供此功能。您可以将设置放在web.config中,并以与标准ASP.NET应用程序相同的方式访问它们。但是我不认为这是个好主意,我认为最好使用SharePoint API来提供Web部件设置。 (幸运的是,设置启用Web部件非常容易。) It’s good example使用SharePoint API
答案 2 :(得分:0)
好吧,我设法解决了..有点...... 我通过SharePoint API(在服务器场上)添加了XML文件(或CSS或任何你想要的),之后我能够使用文件的虚拟路径访问该文件(您可以使用Sharepoint Design Manager查看目录结构和打开你的农场),