将文件上传到网络驱动器文件夹

时间:2013-01-16 11:03:33

标签: c# asp.net-mvc-3 impersonation

我的服务器计算机包括:

  1. IIS 7。
  2. Window server 2008。
  3. 网络驱动器映射为Linux驱动器的Z驱动器。
  4. 托管在服务器计算机上的ASP.NET MVC 3应用程序。
  5. 问题:

    我已经构建了asp.net mvc 3应用程序,它可以将多个文件上传到本地驱动器,但无法上传到我的服务器机器的网络驱动器(在我的情况下为Z:/)。它显示错误:

    Could not find a part of the path 'Z:\uploadfolder\sdlkfjsdl.wav'.
    

    然后,我检查了文件夹(uploadfoler)安全选项,其中网络服务用户没有完全控制权限或写入权限。这里的问题是我无权为NETWORK SERVICE用户添加权限,网络驱动器属于LINUX机器。

    在搜索备用解决方案时,我发现了一个名为impersonate的概念。我对这个概念完全陌生。这是否能够解决我的问题?或者,还有其他替代解决方案吗?

2 个答案:

答案 0 :(得分:1)

您的应用程序应在单独的IIS应用程序池中运行。在IIS中,您可以将用户分配给应用程序池。该用户应具有对网络驱动程序的写访问权。

请参阅http://technet.microsoft.com/en-us/library/cc753842(v=ws.10).aspx

答案 1 :(得分:0)

好的,Z:\是您的网络驱动器,但它是否位于托管IIS的计算机上而没有任何网络驱动器映射?如果它在另一台机器上,你需要使用UNC路径(即\ server \ path \ folder \ filename.ext),因为运行的用户IIS将不会映射它。

您不会将用户“添加”到应用程序池中......您将创建一个显式应用程序池,它以命名用户身份运行,而不是网络服务或应用程序池标识。创建应用程序池时,您可以指定它运行的用户。您可以在特定版本的IIS中找到有关此内容的大量信息。

此命名用户需要具有写入/读取您配置的UNC路径的权限。