【问题标题】:Application won't save file to path应用程序不会将文件保存到路径
【发布时间】:2016-06-05 10:35:48
【问题描述】:

我正在尝试让文件上传在我正在开发的应用程序中工作。

在我的本地机器上,我一直在使用以下方法将文件保存到共享资源上的文件夹中:

string path = Path.Combine("\\appname\myfolder$", Path.GetFileName(file.FileName));
file.SaveAs(path);

一切正常。

(在“appname”服务器上,文件夹“myfolder”位于根目录(例如)c:\myfolder)

当我将项目部署到同一服务器上的 IIS(例如 http:\appname)时,这不再有效。

因此,我尝试将代码更改为指向将要运行的服务器上的 c 驱动器,例如

string path = Path.Combine("c:\\myfolder", Path.GetFileName(file.FileName));
                    file.SaveAs(path);

这也不起作用。尝试了其他一些东西,但现在完全失去了它。有人可以帮忙吗?

【问题讨论】:

  • 您需要使用 Server.MapPath 来获取您要保存的物理路径,并且应用程序池标识必须对该路径具有写入权限。
  • 在使用file.FileName之前,您可能需要先检查文件是否存在。
  • 运行 IIS 的用户呢?它有正确的权限吗?
  • 另外,您可以通过Path.GetDirectorynamestackoverflow.com/questions/674479/…直接从文件中获取文件目录

标签: c# asp.net-mvc


【解决方案1】:

在 IIS 中运行此应用程序时,将授权用户分配给应用程序上下文,即托管网站。 默认情况下,worker 在系统上下文中运行,并且操作系统(机器帐户)需要访问共享 - 这确实不是推荐的解决方案。

查看here如何配置应用程序池标识。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-28
    • 2020-04-26
    • 2014-11-09
    • 1970-01-01
    • 2012-04-29
    • 1970-01-01
    相关资源
    最近更新 更多