我有一个访问器类,可从Json文件中提取所需的数据。 当我在.Net FrameWork中测试控制台应用程序项目时,该路径似乎可以。
但是当在Aws Lex中使用Lambda时,只有当我尝试运行此Json访问器函数时才会出错(即使不使用返回的数据)。
在我看来,将Lambda上传到AWS时,本地工作的相对路径是不同的。
这是访问器类,它在.NetFramwork项目的cosole应用程序中本地工作。 Json文件和DataAccess类都在一个名为“ Accessors”的文件夹中:
public class DataAccess
{
public static List<string> access(int maxPrice, string Shape)
{
List<string> diList = new List<string>();
string filepath = "../../../Accessors/DiData.json";
string result = string.Empty;
string str = string.Empty;
using (StreamReader r = new StreamReader(filepath))
{
var json = r.ReadToEnd();
JObject jObject = JObject.Parse(json);
JToken jUser = jObject["data"]["dResult"][0]["dID"];
var searchResults = from r1 in jObject["data"]["dResult"]
where r1["shape"].ToString() == Shape && r1["price"].Value<System.Int32>() <= maxPrice
select r1;
foreach (var r1 in searchResults)
{
diList.Add(r1["dID"].ToString());
}
}
return diList;
}
}
我在这里调用此函数:
List<string>jsonDataList= Accessors.DataAccess.access(600, "Round");
使用此Lambda作为代码钩子后,仅此调用便在Amazon Lex中引发错误。
答案 0 :(得分:0)
您似乎正在从dev / source文件夹布局加载JSON文件。在Lambda中,您将发送通过Lambda项目上的dotnet publish
命令创建的文件夹结构的zip版本。这是您编译的项目位。
确保已将DiData.json配置为复制到构建输出文件夹,然后可以将相对文件从publish文件夹的根目录加载到DiData.json文件在publish文件夹中复制到的位置。