ASP.NET Core PhysicalFileProvider UNC 错误

问题描述

尝试让它在我的 MAC 上工作一段时间了,但仍然没有运气。 在 ASP.NET Core 应用程序中,我试图从 Windows Server 上的网络共享中获取内容。我读到您可以在包含以下内容时通过 Startup.cs 启动静态文件

app.UseFileServer(new FileServerOptions
{
    FileProvider = new PhysicalFileProvider(@"\\192.168.178.101\2020$"),RequestPath = new PathString("/2020"),EnableDirectorybrowsing = false
});

请注意,我在 MacOS 笔记本电脑上运行此程序。我也尝试过 SMB URL,但没有运气。我可以通过 Finder 很好地连接到共享。 我总是收到错误“路径必须是绝对的”。该服务器上的共享是一个名为 2020 的文件夹。我也尝试过没有 $,但没有运气。我也试过把 smb:// 放在前面,但它把 UNC 看作是相对文件夹路径。

我真的希望有人能帮我解决这个问题。

解决方法

地址格式不正确。它不知道协议。您可以安装 nuget 包 SharpCifs 并获取文件:

var folder = new 
SmbFile("smb://UserName:Password@ServerIP/ShareName/FolderName/");
var modeDate = new DateTime(2000,1,DateTimeKind.Utc);

foreach (SmbFile item in folder.ListFiles())
{
    var modeDate = epocDate.AddMilliseconds(item.LastModified()).ToLocalTime();
    var name = item.GetName();
    var type = item.IsDirectory() ? "dir" : "file";
    var date = lastModDate.ToString("yyyy-MM-dd HH:mm:ss");
    var msg = $"{name} ({type}) - LastMod: {date}";

}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...