我有一个遗留的网络应用程序,它有一个HTTPHandler,可以通过检查数据库中的权限来访问一组文件。
在开发中它可以正常工作。
但在制作中,它在localhost中只能 。尝试访问文件(并且应该读取它)的每台计算机都会引发异常:
拒绝访问路径'G:\ Sites \ Portal \ Portals \ 0 \ attachments'。
在线:
Dim bufferArquivo As Byte() = IO.File.ReadAllBytes(request.PhysicalPath)
它拒绝访问文件所在的文件夹,但我检查了它拥有对所有人的完全权限。
我没有使用假冒,所以我在想是否可以。如果是,我该如何实施?
将网站从IIS6迁移到II7后会发生这种情况。 (适用于iis6,不适用于iis7)
答案 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)