由Handler提供生产中的访问文件"访问被拒绝"

时间:2014-05-23 16:49:49

标签: asp.net iis-7 web-config permission-denied

我有一个遗留的网络应用程序,它有一个HTTPHandler,可以通过检查数据库中的权限来访问一组文件。

在开发中它可以正常工作。

但在制作中,它在localhost中只能 。尝试访问文件(并且应该读取它)的每台计算机都会引发异常:

  

拒绝访问路径'G:\ Sites \ Portal \ Portals \ 0 \ attachments'。

在线:

Dim bufferArquivo As Byte() = IO.File.ReadAllBytes(request.PhysicalPath)

它拒绝访问文件所在的文件夹,但我检查了它拥有对所有人的完全权限

我没有使用假冒,所以我在想是否可以。如果是,我该如何实施?

将网站从IIS6迁移到II7后会发生这种情况。 (适用于iis6,不适用于iis7)

2 个答案:

答案 0 :(得分:1)

检查ApplicationPool为应用程序使用的用户。如果设置为ApplicationPoolIdentity,则需要查找ApplicationPoolIdentity映射到的用户。

您还可以将Identity设置为NetworkService,并为NetworkService提供该文件夹的读取权限。在多台服务器上为我工作100%。

答案 1 :(得分:0)

我不知道确实发生了什么,但在迁移到IIS7之前,request.PhysicalPath正在返回完整文件名路径(完整路径+文件名)。之后,它只撤回包含文件的文件夹(完整路径)。我必须将文件名插入request.PhysicalPath以便像nefore一样工作。

Dim filename As String = request.Path.Substring(request.Path.LastIndexOf("/") + 1)
Dim bufferArquivo As Byte() = IO.File.ReadAllBytes(request.PhysicalPath + "\" + filename)