1

我突然在访问 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 中打开,但在部署时不会。

大多数谷歌页面说,它将在 IIS 7.5 中的应用程序池标识下运行。但我不知道我还需要修改什么。

注意:我在匿名身份验证下运行 -> 应用程序池标识

4

2 回答 2

1

我找到了身份验证问题的解决方案。

问题是我的 Web 服务器是 Windows 2008 R2,而文件共享在 Windows 2003 服务器中。使用“IIS AppPool\DefaultAppPool”标识运行的应用程序。但此用户在 Windows 2003 Server 中不可用。

我将我的应用程序池的身份更改为“网络服务”,并在 2003 服务器中将权限授予“网络服务”用户。现在我可以打开文件应用程序了。

我在这个网站上找到了这个有用的信息:http ://www.element-it.com/OnlineHelpHTTPCommander/Windows/ntfs.html

于 2012-07-10T14:13:41.123 回答
0

尝试以下方法之一。

创建网络驱动器,并使用其驱动器号

string filepath = @"Z:\{0}";

尝试谷歌并搜索“网络驱动映射”。你会发现很多结果。

或者,您可以为运行应用程序池的用户授予访问权限。

并检查您是否没有使用应用程序池的经典模式。

于 2012-07-05T16:21:52.173 回答