我正在尝试在RIA服务中读取XML文件,我收到以下错误。
查询'GetSummaryList'的加载操作失败。找不到路径'C:\ WINDOWS \ SYSTEM32 \ CoreResources \ SumaryListDS.xml'的一部分。
我正在使用正在使用RIA服务的Silverlight 4。我正在尝试读取位于bin \ CoreResources文件夹中的SumaryListDS.xml。但是应用程序试图在bin \ CoreResources下查找文件,它试图从C:\ WINDOWS \ SYSTEM32 \ CoreResources中读取它。
我只是想知道如何使用Silverlight前端在RIA服务中使用相对路径读取文件?
谢谢, 维诺德
答案 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;
}
现在它的工作正常。我不确定这是否是一个完美的解决方案。