C# Exist在本地主机上返回true,在服务器c上返回false
我有一个网格,其中包含另一台服务器上的文件列表和每行的下载按钮。单击按钮时,应下载文件。当我在localhost上单击它时,file.Exist返回true,我可以下载该文件。但是,当我在服务器IIS上尝试相同的按钮时,file.Exist返回false,并且无法下载该文件。此服务器也可以访问该文件。下面是我的代码片段C# Exist在本地主机上返回true,在服务器c上返回false,c#,asp.net,iis,localhost,fileinfo,C#,Asp.net,Iis,Localhost,Fileinfo,我有一个网格,其中包含另一台服务器上的文件列表和每行的下载按钮。单击按钮时,应下载文件。当我在localhost上单击它时,file.Exist返回true,我可以下载该文件。但是,当我在服务器IIS上尝试相同的按钮时,file.Exist返回false,并且无法下载该文件。此服务器也可以访问该文件。下面是我的代码片段 var fileNameToShow = "8D.xls"; var fileNameAndPath = &q
var fileNameToShow = "8D.xls";
var fileNameAndPath = "\\\\10.1.101.151\\Files\\Live\\10\\8D.xls"
FileInfo file = new FileInfo(fileNameAndPath);
file.Refresh();
if (file.Exists)
{
// Send the file to the browser
Response.Clear();
Response.AddHeader("Content-Disposition",
"attachment; filename= " + fileNameToShow + "; size=" + file.Length.ToString());
Response.TransmitFile(fileNameAndPath);
Response.Flush();
Response.End();
}
else
{
throw new Exception("File does not exist!");
}
我能做些什么来解决这个问题
编辑:文件位于10.1.101.151中。IIS位于另一台服务器中。我的本地
也是另一台电脑
首先,您需要在服务器上设置文件夹的权限,并将IIS所在的服务器添加到8D.xls所在的服务器。 其次,您需要设置应用程序池的标识,选择一个自定义帐户,您可以设置管理员
这只是意味着您忘记了解关键区别,您可以访问localhost上的文件,因为localhost使用您的凭据运行,并且具有从远程服务器读取的权限。在IIS上,服务器未使用您的凭据运行。您必须在IIS上设置角色才能使用凭据运行。见:我编辑了这个问题。你能再考虑一下吗?当我重放这个问题并测试它时,我把文件放在Serv2和iServer上。我在本地计算机上访问该站点。我在应用程序中使用的代码与您的相同,唯一的区别是文件路径,\\\\server IP\\c\\Files\\Live\\10\\8D.xls。我将其存储在server1的C驱动器中,因此路径中有一个C。