gpt4 book ai didi

c# - IIS/Azure 云中是否允许 System.IO.File 访问?

转载 作者:行者123 更新时间:2023-11-30 16:13:11 25 4
gpt4 key购买 nike

我有一个 WCF 服务,可以通过 WebClient 获取 CSV 文件。它在我的本地机器上运行良好。然而,当部署在Azure云上时,它似乎悄无声息地失败了。我在日志文件中找不到任何失败的迹象。

我认为这段代码失败的原因是:

 public void DownloadStockPriceFromYahoo()
{
if (File.Exists(_path))
{
DateTime lastModified = System.IO.File.GetLastWriteTime(_path);
if (lastModified.Date < DateTime.Today)
{
File.Delete(_path);
using (WebClient Client = new WebClient())
{
Client.DownloadFile("http://finance.yahoo.com/d/quotes.csv?s=MSFT+INTC+GM&f=snl1d1ohg", _path);
}
}
}
else
{
using (WebClient Client = new WebClient())
{
Client.DownloadFile("http://finance.yahoo.com/d/quotes.csv?s=MSFT+INTC+GM&f=snl1d1ohg", _path);
}
}
}

难道 IIS 不允许文件访问吗?有什么替代方案吗?

最佳答案

您需要使用 TEMP 文件夹或本地存储文件夹才能下载该文件。 Azure 会保护您正在运行的文件夹不被写入。模拟器不会捕获它,但 Azure 运行时会捕获它。

设置的 _path 值是多少?

以下是我将文件夹设置为来自 LocalStorage 或临时文件夹的方法:

    var folder = Path.GetTempPath();
folder = RoleEnvironment.IsAvailable
? RoleEnvironment.GetLocalResource("StockPriceDownloadFolder").RootPath
: folder;

现在,为了将 StockPriceDownloadFolder 配置为本地存储,请检查此链接:http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx您还可以通过 Visual Studio UI 配置文件夹(在角色的属性窗口内)

此外,请记住,此位置应该是临时位置...当服务器在负载平衡环境中运行时,一台服务器将无法访问另一台服务器的存储...加上 Azure 可以(并且将)随意重新镜像您的服务器(假设您正在使用云服务)...

关于c# - IIS/Azure 云中是否允许 System.IO.File 访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22047123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com