基本上,我已将Azure文件存储映射为网络设备,并设法使以下代码正常工作:
public ActionResult Post([FromBody]ConfiguratorApi configuratorApi)
{
string SourcePath = "Z:\\Skeleton";
string DestinationPath = "Z:\\TMP";
return GenerateConfigFiles(configuratorApi, SourcePath, DestinationPath);
}
这个GenerateConfigFiles实际上做的是根据输入从骨架到tmp文件夹处理某些文件并编辑其中一些文件(使用System.IO)。我想要实现的是在Azure中将应用程序部署为App Service(而不是VM)并继续使用System.IO。我尝试过这样的事情:
public ActionResult Post([FromBody]ConfiguratorApi configuratorApi)
{
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();
CloudFileShare share = fileClient.GetShareReference("config");
CloudFileDirectory rootDir = share.GetRootDirectoryReference();
CloudFileDirectory skeletonDir = rootDir.GetDirectoryReference("Skeleton");
CloudFileDirectory newConfigDir = rootDir.GetDirectoryReference("TMP");
string SourcePath = skeletonDir.Uri.ToString();
string DestinationPath = newConfigDir.Uri.ToString();
return GenerateConfigFiles(configuratorApi, SourcePath, DestinationPath);
}
然后我得到了
System.NotSupportedException:'不支持给定路径的格式。'
因为路径就像
此外,我浏览了网页,但大部分帖子都相当陈旧且不再相关。这有可能(可能是SAS - 共享访问签名)或者我的方向完全错误吗? 我也愿意接受其他解决方案。
文件夹不大于2MB。
答案 0 :(得分:1)
根据您的描述,GenerateConfigFiles
方法用于根据文件系统的路径复制文件。为了在Azure Web App上托管您的应用程序,我假设您无法安装Azure文件共享。但您可以利用storage client library将共享中的文件下载到Web应用程序的临时文件夹中,然后根据需要处理文件,然后保存回您的共享。对于azure web app下的可用目录访问,您可以按照Azure Web App sandbox下的文件系统限制/注意事项部分进行操作。
或者您需要将应用程序托管到azure云服务或azure VM,然后Mount an Azure File share。