我正在尝试输出我在.net核心api项目中的xml文件,然后在代码中访问该文件。
我在project.json中有这个代码来输出xml
"buildOptions": {
"emitEntryPoint": true,
"copyToOutput": "myfile.xml"
"preserveCompilationContext": true
}
然后我尝试像这样访问它
public Startup(IHostingEnvironment env)
{
var path = env.ContentRootPath;
var filepath = Path.Combine(path, "myfile.xml");
var doc = new XmlDocument();
doc.Load(fileName); //throws error
}
但是当我在Azure中运行时,我收到此错误
FileNotFoundException - 找不到文件 'd:\家\站点\ wwwroot的\ myfile.xml中'
我已尝试过每个版本的例如this answer,但没有运气。
更新1
这是Program.cs中的Main方法
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();
我试图通过浏览(使用Kudu Service)找到每个可思考文件夹的xml文件,所以我认为xml文件没有得到构建 https://myvsts.scm.azurewebsites.net/api/vfs/site/wwwroot/
更新2
我发现copyToOutput在本地工作得很好,但在azure上却没有。我实施this来浏览文件夹,我的xml文件没有显示直到我右键单击它并按发布!就像项目发布一样没有把它拿起来......
答案 0 :(得分:0)
您的ContentRootPath似乎设置为wwwroot文件夹。通常,此设置为包含 wwwroot的文件夹,IHostingEnvironment.WebRootPath
指向“wwwroot”路径。
检查您的Program.Main类是否包含此内容:
var host = new WebHostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
此外,您可能还需要将此文件添加到“publishOptions”。 https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json#publishoptions
"publishOptions": {
"include": ["myfile.xml"]
}