Как прочитать xml-файл по относительному пути в службе RIA?

Я пытаюсь прочитать файл XML в службе RIA и получаю следующую ошибку.

Ошибка операции загрузки для запроса "GetSummaryList". Не удалось найти часть пути «C:\WINDOWS\SYSTEM32\CoreResources\SumaryListDS.xml».

Я использую Silverlight 4, который использует службу RIA. Я пытаюсь прочитать SumaryListDS.xml, расположенный в папке bin\CoreResources. Но приложение вместо того, чтобы искать файл в папке bin\CoreResources, пытается прочитать его из C:\WINDOWS\SYSTEM32\CoreResources.

Мне просто интересно, как прочитать файл, используя относительный путь в RIA Service с интерфейсом Silverlight?

Спасибо, Винод


person Vinod    schedule 01.10.2010    source источник


Ответы (2)


Вы должны иметь возможность использовать .. для перехода на один каталог вверх, например ../CoreResources/GetSummaryList.xml

person Nikhil    schedule 05.10.2010

Вот как я решил свою проблему. Он был реализован на одном из уровней бизнес-уровня, который может использоваться различными клиентами (ASP.NET, консольное приложение, клиент Windows, Silverlight, размещенный внутри ASP.NET). Поэтому, когда вызывается GetSummaryXml, раньше это было

public DataSet GetSummaryXml()
{
    var dsReport = new DataSet("Report");
    var summaryListXmlPath = "CoreResources/SumaryListDS.xml";
    dsReport.ReadXml(summaryListXmlPath);
    return dsReport;
}

Я начал получать сообщение об ошибке, когда начал использовать его в доменной службе RIA для использования клиентом Silverlight 4.

ОШИБКА:

Ошибка операции загрузки для запроса "GetSummaryList". Не удалось найти часть пути «C:\WINDOWS\SYSTEM32\CoreResources\SumaryListDS.xml».

Но SumaryListDS.xml находится в папке bin\CoreResources, а не в WINDOWS\SYSTEM32\CoreResources

Поэтому я изменил GetSummaryXml на...

public DataSet GetSummaryXml()
{
    var dsReport = new DataSet("Report");
    var currContext = HttpContext.Current;
    var summaryListXmlPath = "CoreResources/SumaryListDS.xml";
    if (currContext != null)
        summaryListSchemaPath = currContext.Server.MapPath(@"../bin/" + summaryListXmlPath);
    dsReport.ReadXml(summaryListXmlPath);
    return dsReport;
}

И теперь он работает нормально. Я не уверен, что это идеальное решение.

person Vinod    schedule 06.10.2010