【问题标题】:To store the output of web service in virtual directory将 Web 服务的输出存储在虚拟目录中
【发布时间】:2013-11-13 06:16:33
【问题描述】:

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

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

谁能建议我应该做什么,以便我可以以这样一种方式存储这个文件,以便在远程机器上部署我的 Web 服务后可以轻松访问?

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

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

【问题讨论】:

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


    【解决方案1】:

    你有两种方法:

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

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

      File.WriteAllText(System.Web.HttpContext.Current.Server.MapPath("/json"), "json-text");  
      

    Server.MapPath 将虚拟目录映射到它在操作系统中的等效绝对目录。例如,如果您的网站托管在c:\websites\json-project\,那么使用Server.MapPath("/foo") 将被转换为c:\websites\json-project\foo 路径。

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

    【讨论】:

    • 你能解释一下,第二个选项实际上是做什么的,我正在尝试阅读相关的帮助材料,但没有得到想要的帮助,我想了解这背后的实际概念,不胜感激如果你能解释一下你的特别是这个 System.Web.HttpContext.Current.Server.MapPath
    • 谢谢..这很有帮助
    【解决方案2】:

    您可以通过提供诸如Server.MapPath("/Json/Json.json") 之类的相对路径来找到应用程序的物理路径

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

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

    【讨论】:

    • 谢谢..您的回答也对我有很大帮助,但之前有人帮助了我,我选择了他的回答,抱歉...感谢您提供的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    相关资源
    最近更新 更多