gpt4 book ai didi

c# - 如何让 Web 应用程序提供来自不同服务器的静态文件

转载 作者:行者123 更新时间:2023-11-30 22:56:14 27 4
gpt4 key购买 nike

我有一个 ASP.Net Core 2 MVC webapp,它需要检索和提供存储在同一 LAN 上不同服务器上的 pdf。它知道完整的路径名。这段代码在本地机器上开发时运行良好(我将代码精简到最低限度以达到目的):

public IActionResult GetPdf()
{
FileStream fileStream = new FileStream(@"\\SRV1\Drawings\mydrawing.pdf", FileMode.Open, FileAccess.Read);
var fsResult = new FileStreamResult(fileStream, "application/pdf");
return fsResult;
}

但是,当我在测试部署的服务器上发布应用程序时,出现此错误:

System.IO.FileNotFoundException: Could not find file '/var/www/myapp/\\SRV1\Drawings\mydrawing.pdf'

现在,我知道该应用程序只能从其 wwwroot 中提供静态文件,所以我并不感到惊讶。因此,基于this post和其他类似的帖子,我将此代码添加到 Startup.cs:

app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(@"\\SRV1\Drawings"),
RequestPath = new PathString("/PdfDrawings"),
EnableDirectoryBrowsing = false
});

并像这样改变了 Controller 的 Action :

public IActionResult GetPdf()
{
FileStream fileStream = new FileStream(@"\PdfDrawings\mydrawing.pdf", FileMode.Open, FileAccess.Read);
var fsResult = new FileStreamResult(fileStream, "application/pdf");
return fsResult;
}

但是这种方式在开发机器和服务器上都不起作用,因为两者都找不到路径。两者之间的唯一区别是本地机器将运行应用程序,并且仅在我请求 GetPdf 操作时返回此错误,因为它将指向 C:\

DirectoryNotFoundException: Could not find a part of the path 'C:\PdfDrawings\mydrawing.pdf'.

而部署的应用程序甚至不会运行,因为在执行 Startup 的 Configure 方法时一开始就发生了类似的错误。

我也在 Startup.cs 中尝试过:

app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(@"\\SRV1\Drawings"),
RequestPath = "/PdfDrawings"
});

我原以为会遇到凭据问题,但我从来没有走到那一步。我也知道这种方法可能存在安全问题,但该应用程序将驻留在 LAN 中,并且只会由受信任的人员使用,因此这不是问题。

附加信息,以防万一:我正在将应用程序部署到 Ubuntu 服务器 18.04。我尝试访问的文件位于同一 LAN 中的不同服务器上。

最终,该应用程序还需要在第二台服务器上读取和写入代码的其他部分,请问有人能给我指点一篇解释如何实现这一点的帖子/教程吗?

最佳答案

您的 Ubuntu 服务器不理解 Windows 共享路径。只需尝试访问您在 Ubuntu 服务器上提供的路径,您就会看到问题。

您必须在您的服务器上安装共享才能访问它。您还必须为本地开发和部署使用不同的路径。

在 Ubuntu 上,它可能类似于/mnt/srv1/Drawings(假设您将共享安装在/mnt/srv1 中),而在 Windows 上,您的路径保持不变。

关于c# - 如何让 Web 应用程序提供来自不同服务器的静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54549533/

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