从 iis (C# API) 访问 azure 文件共享

Posted

技术标签:

【中文标题】从 iis (C# API) 访问 azure 文件共享【英文标题】:Access azure file share from iis (C# API) 【发布时间】:2022-01-11 17:48:32 【问题描述】:

我似乎无法通过在 IIS 中运行的 API 访问我挂载的 azure 文件共享。

我的 API 启动另一个 C# 控制台应用程序,但由于它是作为用户启动的,它不会访问我的 Z: 驱动器中的文件(安装的 azure 文件共享)。

互联网上的人们似乎可以选择创建一个与我的存储帐户同名、密码作为访问密钥的本地用户。但似乎创建该用户有字符限制。

无论如何我可以通过访问我安装的 Z: 驱动器来启动这个 C# 控制台应用程序吗?来自我在 IIS 中运行的 C# API。无需重命名我的存储帐户等。通过授予 iis 更多访问权限或以更多访问权限启动控制台应用程序。

希望有更聪明的方法。

【问题讨论】:

既然你用 C# 编码,是不是直接使用存储 API,没有文件共享开销更好? @SteveB 虽然我认为该选项不够多,但我是否有相同的可能性来获取文件列表和复制文件文件夹。那么这样的性能会更好/相同吗?我首先安装的原因是直接处理那里的文件。但与先复制它们相比,这速度太慢了。 我不知道 azure 文件共享是如何工作的,但我知道它是 smb 共享下的包装器。使用 blob 存储,我相信您将受益于性能。但这意味着您要实现的目标是可寻址的(下载二进制文件,编写它,重新上传二进制文件)。可以加载到内存中的小文件很容易,对于大文件来说有点复杂。 您可以使用 System.Diagnostics.Process 作为有权访问该已安装驱动器的用户启动控制台应用程序,请参阅此处的example。 为什么不使用rest api 访问 azure 文件共享? 【参考方案1】:

您可以在 C# 代码中创建 HttpClient

你可以使用rest api来访问你的Azure File Share

【讨论】:

因为从文件夹中复制 1GB 的文件似乎更容易,然后尝试弄清楚如何使用 API 来执行此操作。并且确实可以从 iis 中查看网络驱动器。

以上是关于从 iis (C# API) 访问 azure 文件共享的主要内容,如果未能解决你的问题,请参考以下文章

如何从 C# 代码轮换 Azure 存储帐户访问密钥?

从 C# Azure 函数中访问证书

如何使用 API 和 c# 从 azure DevOps 服务器下载文件到指定路径

使用 Azure Web API 应用程序中的 C# 从 Azure Data Lake 查询 parquet 数据

C# API - 提供从 Azure Blob 存储下载的文件

C# 使用 REST API 连接到 Azure 媒体服务帐户