如何从RIA服务中的相对路径读取xml文件?

时间:2010-10-01 16:56:10

标签: silverlight-4.0 service ria relative-path

我正在尝试在RIA服务中读取XML文件,我收到以下错误。

查询'GetSummaryList'的加载操作失败。找不到路径'C:\ WINDOWS \ SYSTEM32 \ CoreResources \ SumaryListDS.xml'的一部分。

我正在使用正在使用RIA服务的Silverlight 4。我正在尝试读取位于bin \ CoreResources文件夹中的SumaryListDS.xml。但是应用程序试图在bin \ CoreResources下查找文件,它试图从C:\ WINDOWS \ SYSTEM32 \ CoreResources中读取它。

我只是想知道如何使用Silverlight前端在RIA服务中使用相对路径读取文件?

谢谢, 维诺德

2 个答案:

答案 0 :(得分:0)

您应该可以使用..来上一个目录,例如../ CoreResources / GetSummaryList.xml

答案 1 :(得分:0)

以下是我解决问题的方法。它已在业务层的一个层中实现,可供各种客户端使用(ASP.NET,控制台应用程序,Windows客户端,ASP.NET内部托管的Silverlight)。因此,当调用GetSummaryXml时,之前它曾经是

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

当我开始在RIA Domain Service中使用它以供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;
}

现在它的工作正常。我不确定这是否是一个完美的解决方案。