使用 .NET Core Web API 访问 UNC 路径

问题描述 投票:0回答:1

我有一个端点可以访问带有一些图像的远程文件夹(UNC 路径)。在本地,我已经能够做到这一点并获取图像,但是如果 Web Api 发布在 IIS 中,则返回结果表明我的凭据不正确。

我能够在Web Forms应用程序中使用DllImport模拟管理员来解决这个问题,但是实现不同,并且它们位于不同的计算机中,即使远程文件夹是相同的。

我无法使用

NetworkCredentialWindowsIdentity.RunImpersonatedWeb Api 项目中复制解决方案。

我基本上是这样做的,没有凭据部分:

byte[] imageBytes = System.IO.File.ReadAllBytes(uncPath); return File(imageBytes, "image/png");
两个 IIS 都已配置了用户和访问权限,除非我遗漏了某些内容。

提前致谢。

iis asp.net-core-webapi credentials unc system.io.file
1个回答
0
投票
以下代码示例展示了如何使用凭据来配置静态文件中间件:

// HARDCODING FOR DEMO ONLY - Use either Azure Key Vault or some other secret manager var sourceCredentials = new NetworkCredential { Domain = "domain", UserName = "user", Password = "pass" }; using (new NetworkConnection("\\\\Network\\Shared", sourceCredentials)) { // to serve static froms from \\network\shared location app.UseStaticFiles(new StaticFileOptions() { FileProvider = new PhysicalFileProvider( Path.Combine("\\\\Network\\Shared")) }); }
该方法使用自定义的 NetworkConnection 类来模拟网络连接,并在静态文件中间件中使用该连接。该方法的目的是在应用程序启动时使用指定的凭据建立与共享网络路径的连接,以便应用程序在启动过程中可以访问共享文件夹中的静态文件。 

需要注意的是,此方法中的凭据以明文形式硬编码在代码中。这在实际生产环境中是不安全的。在生产环境中,您应该将这些凭据保存在某个安全位置(例如密钥保管库)。

参考链接:

如何在 IIS 上托管的 ASP.NET Core 应用中模拟虚拟目录进行调试?

如何在asp.net core中使用带有凭据的网络共享路径作为静态文件夹

© www.soinside.com 2019 - 2024. All rights reserved.