C# IIS/Azure云中是否允许System.IO.File访问?
我有一个WCF服务,通过WebClient获取CSV文件。它在我的本地机器上运行良好。然而,当部署在Azure云上时,它似乎会悄无声息地失败。我无法在日志文件中找到它失败的任何迹象 我假设此代码失败是因为:C# IIS/Azure云中是否允许System.IO.File访问?,c#,wcf,iis,azure,C#,Wcf,Iis,Azure,我有一个WCF服务,通过WebClient获取CSV文件。它在我的本地机器上运行良好。然而,当部署在Azure云上时,它似乎会悄无声息地失败。我无法在日志文件中找到它失败的任何迹象 我假设此代码失败是因为: public void DownloadStockPriceFromYahoo() { if (File.Exists(_path)) { DateTime lastModified = Sys
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);
}
}
}
public void从雅虎()下载股票价格
{
if(File.Exists(_path))
{
DateTime lastModified=System.IO.File.GetLastWriteTime(\u路径);
如果(lastModified.Date
可能是IIS不允许文件访问吗?还有什么选择?您需要使用临时文件夹或本地存储文件夹才能下载文件。Azure保护您正在运行的文件夹不被写入。Emulator不会捕获它,但Azure运行时会 正在设置的_path的值是多少 下面是如何将文件夹设置为来自本地存储或临时文件夹:
var folder = Path.GetTempPath();
folder = RoleEnvironment.IsAvailable
? RoleEnvironment.GetLocalResource("StockPriceDownloadFolder").RootPath
: folder;
现在,要将StockPriceDownloadFolder配置为本地存储,请选中以下链接:
您还可以通过Visual Studio UI(在角色的“属性”窗口中)配置文件夹
此外,请记住,此位置应为临时位置。。。当服务器在负载平衡环境中运行时,一台服务器将无法访问另一台服务器的存储。。。另外,Azure可以(也将)随意重新映像您的服务器(假设您正在使用云服务) 这很容易测试,不是吗?好的,你能告诉我如何测试这个吗?因为当我运行我的服务时,它只是挂起(超时)。日志文件中没有异常指示。您现在如何获取应用程序错误?当你抛出一个异常时,它会出现在某个控制台的某个地方吗?我是Azure的新手。当我将现有服务转换为Azure Webrole时,我才意识到我没有进行一般的异常处理。我刚刚发现了这一点,并将按照建议实施。希望我能在日志文件中看到一些东西。谢谢佩塔,你有什么样的代码吗?别害羞,有一个回答按钮是有原因的非常感谢你的帮助。你可能是对的。它被设置为
readonly string\u path=@“quotes.csv”代码>