我希望我的Uploads文件夹驻留在文件共享上。
为什么要这样:冗余前端。
所以不要保存到:
C:\ inetpub \ wwwroot \ wwwroot \ Uploads
上传内容应保存到:
\\ fileshare01 \ MyWebsite \ Uploads
我知道VirtualDirectories存在。这适用于从文件共享读取,但是写入Uploads目录仍会写入lokal驱动器。 因此,使用VirtualDirectories,我可以访问http://localhost/Uploads/myfile.png,它实际上位于文件共享上,但是新文件未写入其中!
这里(简化)我如何保存文件:
IFormFileCollection files = Request.Form.Files;
var file = files.First();
using (var stream = new FileStream(@"Uploads\myfile.png", FileMode.Create))
{
await file.CopyToAsync(stream);
}
当我尝试保存到新的网络路径作为绝对路径时,似乎我需要更高的权限并最终出现500.30错误。我猜是因为应用程序池用户的权限太少,我认为这是一件好事。
我的问题:
如何通过良好实践解决此问题?配置VirtualDirectory(包括编写)时,不是所有事情都能自动完成吗?
答案 0 :(得分:0)
解决了。由于我的appconfig.json中存在错误,我刚得到500.30错误。我没有在基本路径中转义反斜杠。
我发现这句话blog post
无需在IIS中添加“虚拟目录”,这是 不推荐使用
并说明这是通过Startup.cs Configure()方法完成的方式:
app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(@"\\server\path"),
RequestPath = new PathString("/MyPath"),
EnableDirectoryBrowsing = false
});
ASP.NET Core的另一个配置奥秘得以解决:)