将Web服务的输出存储在虚拟目录中

时间:2013-11-13 06:16:33

标签: c# asp.net json web-services

我创建了一个以JSON格式提供数据的Web服务,我将读取此数据以创建高级图表。当我编写这个Web服务时,我得到了字符串中的值,我将其序列化为JSON格式并将其存储在系统上,但问题是当我将在远程机器中部署我的Web服务时,我将面临存储问题的问题。文件,因为我提供了本地路径,如下面的代码所述,

System.IO.File.WriteAllText(@"C:\Json\Json.json", jSearializer.Serialize(modified_listofstrings));

任何人都可以建议我这样做,以便我可以存储此文件,以便在远程计算机上部署我的Web服务后可以轻松访问该文件吗?

这可能吗?或者我将不得不创建一个简单的asp.net应用程序并使用该Web服务并将该文件存储在新创建的应用程序的文件夹中?

我对这个概念很新,因此我不知道存储在虚拟文件夹或类似的东西,我有建议这样做,如果有人向我解释这个概念,我将非常感激...... / p>

2 个答案:

答案 0 :(得分:1)

您有两种方式:

  1. 授予您的应用程序标识写入权限以写入c:\json文件夹,这不是一个好主意。

  2. 将代码更改为使用相对路径:

    File.WriteAllText(System.Web.HttpContext.Current.Server.MapPath("/json"), "json-text");  
    
  3. Server.MapPath将虚拟目录映射到OS中等效的绝对目录。例如,如果您的网站位于c:\websites\json-project\,则使用Server.MapPath("/foo")将转换为c:\websites\json-project\foo路径。

    默认情况下,任何ASP.NET应用程序都可以完全访问其所有文件夹。

答案 1 :(得分:1)

您可以通过提供类似Server.MapPath("/Json/Json.json")

的相对路径来查找应用程序的物理路径

有关更多信息,请查看以下问题

Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). What is the difference?