使用Azure中的Composite C1中的代码写入文件?

时间:2015-11-10 10:43:10

标签: c# .net azure razor c1-cms

我已经尝试在网上搜索了几天,试图想办法解决这个问题。

我在Azure中安装了Composite C1 .NET CMS作为Web应用程序,我想在Composite中的服务器上缓存外部Web服务调用的结果。结果以JSON形式返回,所以我的想法是将JSON结果写入服务器上的JSON或文本文件(它的公共内容,因此没有隐私问题)以及时间戳,并从该文件中读取JSON。时间戳比x分钟前更新。如果没有,我将调用Web服务以获取新结果并覆盖现有内容。当我将结果手动复制到服务器上的文件并从中读取时,读取/加载工作完全正常,但我的问题是使用File.WriteAllLines() 写入所述文件。

我把它作为Razor函数,但每当我尝试写入文件时(即使是相对路径),我都会收到一个错误,告诉我(显然)我没有权限访问D:\ Windows \ System32中。这是由于我相信Azure的本质。到目前为止,我发现的唯一选择是使用表单生成器来模拟文件上传,但这似乎对我的意图太过分了。

我是以错误的方式来做这件事的吗?我的目的是避免使用数据库或BLOB存储进行如此简单的操作,当它通过Composite的管理/系统管理手动上传文件并从中读取时,它可以很好地工作。

提前致谢。

1 个答案:

答案 0 :(得分:1)

无视这个问题。我发布它后,我有一个“aha” - moment并找到Server.MapPath() metod。我想我误解了Azure Web App存储的工作原理。

我的最终解决方案就是:

private void WriteJsonToFile(string jsonContent) {
    string[] content = { DateTime.Now.ToString(), jsonContent };

    System.IO.File.WriteAllLines(Server.MapPath("~/JSON/feed.txt"), content);
}