我突然在ASP.NET应用程序中访问文件时遇到了麻烦。 我无法访问位于共享上的文件(与Web服务器不同的服务器)。
说, 我的开发机器是“A” 我有要从服务器“B”访问的文件。
当我在asp.net中编写代码时,它在调试模式下工作正常。但是,当我部署到IIS 7.5时,我收到了未经授权的异常。
一段代码:
protected void Button1_Click(object sender, EventArgs e)
{
string filepath = @"\\ServerB\MyDocs\{0}"; //Here MYDocs folder is a shared folder in ServerB
string filename = "Resume.pdf";
string fileFullName = String.Format(filepath,filename);
Response.TransmitFile(fileFullName);
}
当我在调试模式下运行时,pdf文档在IE中打开,但在部署时则不会。
大多数Google网页都说,它会在IIS 7.5中的应用程序池标识下运行。 但我无法弄清楚我还需要修改什么。
注意:我正在匿名身份验证下运行 - >应用程序池标识
答案 0 :(得分:1)
我找到了身份验证问题的解决方案。
问题是我的网络服务器是Windows 2008 R2,文件共享是在Windows 2003服务器中。 使用“IIS AppPool \ DefaultAppPool”标识运行的应用程序。但是此用户在Windows 2003 Server中不可用。
我将应用程序池的标识更改为“网络服务”,并将权限授予2003服务器中的“NetworkService”用户。 现在我可以打开文件应用程序了。
我在此网站中找到了这个有用的信息:http://www.element-it.com/OnlineHelpHTTPCommander/Windows/ntfs.html
答案 1 :(得分:0)
尝试以下方法之一。
创建网络驱动器,并使用其驱动器号
string filepath = @"Z:\{0}";
尝试使用Google搜索“网络直播映射”。你会发现很多结果。
或者您可以为运行应用程序池的用户授予访问权限。
并检查您是否使用经典模式的应用程序池。