Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在NancyFX中返回或修改.json文件_C#_Asp.net_Nancy - Fatal编程技术网

C# 在NancyFX中返回或修改.json文件

C# 在NancyFX中返回或修改.json文件,c#,asp.net,nancy,C#,Asp.net,Nancy,我正试图用NancyFX构建一个简单的API,它由ASP.NET托管。调用时,它应该返回一些JSON,这些JSON存储在名为“data.JSON”的文件中,该文件与主模块一起存储在根级别。此外,还应设置JSON文件的内容 我最初的做法是: Get["/api/get"] = _ => { string allText = System.IO.File.ReadAllText(@"c:\data.json"); object jsonObject = JsonConvert.Dese

我正试图用NancyFX构建一个简单的API,它由ASP.NET托管。调用时,它应该返回一些JSON,这些JSON存储在名为“data.JSON”的文件中,该文件与主模块一起存储在根级别。此外,还应设置JSON文件的内容

我最初的做法是:

Get["/api/get"] = _ =>
{
  string allText = System.IO.File.ReadAllText(@"c:\data.json");
  object jsonObject = JsonConvert.DeserializeObject(allText);
  return jsonObject;
}

Post["/api/set"] = parameters =>
{
  string json = JsonConvert.SerializeObject(parameters);
  System.IO.File.WriteAllText(@"c:\data.json", json);
  return HttpStatusCode.OK;
}
但是,程序在运行时找不到该文件。在阅读了这里的一些答案后,我试着做了以下几点(也不起作用):


我找到的答案来自2011年,所以我怀疑这就是为什么它们不起作用的原因。解决这个问题的最新方法是什么?

经过一番努力,我找到了一个解决方案。您必须创建一个类模型来表示您将要接收的数据,在这种情况下,该模型称为InfoModel。然后我将Get和Post编码为:

Get["/api/get"] = _ =>
{
  DefaultRootPathProvider pathProvider = new DefaultRootPathProvider();
  return new GenericFileResponse(pathProvider.GetRootPath() + "data.json", "application/json");
};

Post["/api/set"] = parameters =>
{
  DefaultRootPathProvider pathProvider = new DefaultRootPathProvider();
  var model = this.Bind<InfoModel>();
  string json = JsonConvert.SerializeObject(model);
  File.WriteAllText(pathProvider.GetRootPath() + "data.json", json);
  return HttpStatusCode.OK;
};
Get[“/api/Get”]=\u=>
{
DefaultRootPathProvider路径提供者=新的DefaultRootPathProvider();
返回新的GenericFileResponse(pathProvider.GetRootPath()+“data.json”,“application/json”);
};
Post[“/api/set”]=参数=>
{
DefaultRootPathProvider路径提供者=新的DefaultRootPathProvider();
var model=this.Bind();
字符串json=JsonConvert.SerializeObject(模型);
File.writealText(pathProvider.GetRootPath()+“data.json”,json);
返回HttpStatusCode.OK;
};
Get["/api/get"] = _ =>
{
  DefaultRootPathProvider pathProvider = new DefaultRootPathProvider();
  return new GenericFileResponse(pathProvider.GetRootPath() + "data.json", "application/json");
};

Post["/api/set"] = parameters =>
{
  DefaultRootPathProvider pathProvider = new DefaultRootPathProvider();
  var model = this.Bind<InfoModel>();
  string json = JsonConvert.SerializeObject(model);
  File.WriteAllText(pathProvider.GetRootPath() + "data.json", json);
  return HttpStatusCode.OK;
};