Silverlight无法找到XML数据源

时间:2010-03-25 23:33:27

标签: asp.net-mvc silverlight

我对Silverlight开发很新。我知道这是客户端技术,因此paradyme与传统的ASP.NET开发不同。话虽如此,我不明白我的服务器端代码的部署位置。

我有一个银灯\ MVC应用程序。我试图从我的'Models'文件夹中读取XML文档。下面的代码片段是在与XML文档“Models”位于同一位置的类中执行的。 load()导致SystemIOFileNotFound异常。我注意到在构建应用程序时,XML文档没有放在与Web项目程序集相同的位置。我认为这是特定于这是一个Silverlight项目的事实。有人能告诉我我错过了什么吗?

  _xdoc = new XDocument();
   _xdoc = XDocument.Load(new Uri("videos.xml",UriKind.Relative).ToString());

编辑..

我所追求的行为是起始页面(silverlight)通过服务器端控制器填充控件。即localhost / video

3 个答案:

答案 0 :(得分:0)

Silverlight无法访问您的文件系统(谢天谢地),这就是您无法访问该文件的原因。尝试将其作为资源嵌入,或将其存储在silverlight提供的本地存储API中。

答案 1 :(得分:0)

假设您的Models文件夹位于Web项目中(即不是Silverlight项目),我认为您的问题与Silverlight无关。 加载XML文件的代码假定该文件位于当前目录中,因此您需要通过部署技术来确保该文件。

如果您在Silverlight部分中执行此操作,则应将XML文件放在嵌入式资源中,并将其作为流(使用Assembly.GetManifestResourceStream获取)或作为资源(WPF,而非嵌入式资源)访问)并使用包部分语法访问它。

答案 2 :(得分:0)

问题是我试图像在典型的ASP.net中那样访问这个静态资源。但是我发现有必要使用当前的HTTPContext将路径映射到文件:

HttpContext.Current.Server.MapPath("~/App_Data/videos.xml");

所以上面对我有用。由于此代码位于Web项目而不是Silverlight项目中,因此我仍然不清楚为什么我不能使用相对路径访问此资源。此代码将在Web服务器的上下文中执行。 即。

XDocument.load(../App_Data/videos.xml);