在 MVC 中看不到 ASP.NET 另一台服务器的路径



我有一个内部ASP.NET MVC站点,需要读取Excel文件。该文件位于与ASP.NET MVC运行的服务器不同的服务器上,为了防止访问问题,我正试图将其复制到ASP.NET MVC服务器上。

它在我的开发机器上运行正常,但当它部署到服务器时,它看不到路径。

这是来自模型(C#(的精简代码:

string fPath = HttpContext.Current.Server.MapPath(@"/virtualdir");
string fName = fPath + "test.xlsm"; 
if (System.IO.File.Exists(fName))
{
// Copy the file and do what's necessary
}
else
{
if (!Directory.Exists(fPath))
throw new Exception($"Directory not found: {fPath} ");
else
throw new Exception($"File not found: {fName } ");
}

我得到的错误是

未找到目录:

后跟路径。

错误中的路径是正确的-我已经将其复制并粘贴到资源管理器中,它解决了问题。

我已经尝试使用完整的UNC路径、映射的网络驱动器和虚拟目录(如上面的代码所示(。在需要的地方,这些被赋予了网络管理权限(仅用于测试!(,但仍然没有任何效果。

内部网站使用通过身份验证,但我使用了具有虚拟目录完全管理权限的特定凭据,IIS中的虚拟目录将OK扩展到所需文件夹。

我还尝试赋予应用程序池(在集成模式下运行(完全的网络管理权限。

我有点希望我只是忽略了一些简单的东西,这不是一个"安全功能"。

我发现这个问题是在asp.net mvc服务器之间复制文件,但答案是使用FTP,如果可以避免的话,我不想走这条路

如有任何协助,我们将不胜感激。

首先,为了安全起见,您的目录正在正确构建,我会使用Path.Combine.

string fName = Path.Combine(fPath, "test.xlsm")

其次,我会查看下面的帖子,并在那里尝试一些事情,因为这似乎是一个类似的问题。

目录。存在不适用于网络路径

如果您仍然无法查看目录,则用户很可能无法访问该网络路径。可能发生的情况是运行应用程序的应用程序池可以访问服务器上的目录。生产箱可能没有同样的访问权限。你必须和网络工程师联系才能解决这个问题。

或者,如果这是您的最终目标,您可以编写一个Powershell脚本,以同时访问生产服务器和开发服务器的用户身份运行,将文件复制到生产服务器,如果您的环境允许,您的服务器管理员可以为您安排。

相关内容

最新更新