как добавить файл XML в проект sharepoint - PullRequest
0 голосов
/ 24 ноября 2011

Я разрабатываю webpart, который должен читать файл XML.Для этого я создал класс, в котором метод 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(@"
........

Я не знаю,У меня проблемы с определением пути к файлу, или мне нужно иметь повышенное разрешение для доступа к нему?Или, может быть, когда решение развернуто, структура каталогов меняется, поэтому я указываю неправильный путь?Как вы думаете?Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 29 ноября 2011

Если вы не хотите сохранять настройки для управления своей веб-частью, вы можете использовать такие способы. Вы можете поместить параметры в файл web.config и получить к ним доступ таким же образом, как и для стандартных приложений ASP.NET. Однако я не думаю, что это хорошая идея, я думаю, что лучше использовать API-интерфейс SharePoint, чтобы задать параметры веб-части. (К счастью, в настройках достаточно легко включить вашу веб-часть.). Хороший пример для использования SharePoint API

0 голосов
/ 21 декабря 2011

Что ж, мне удалось решить это ... что-то еще ... Я добавил XML-файл (или CSS-файл или все, что вам нужно) через SharePoint API (на ферме), после чего я смог получить доступ к файлу с помощью виртуального путифайла (вы можете увидеть структуру каталогов, используя Sharepoint Design Manager и открыв ферму),

0 голосов
/ 25 ноября 2011

Это определенно проблема с SharePoint, который не может найти файл по указанному пути. Вы можете загрузить файл в библиотеку документов и прочитать его оттуда.

Я предполагаю, что в приведенном выше случае, если ваша dll основана на bin, код попытается сгенерировать физический путь из папки bin вашего виртуального каталога.

Также - SPContext.Current.Web.Url + "_layouts" + "Ваша папка под шаблонами" + "имя файла конфигурации" также должны работать.

НТН, Нитин Растоги

...