代码之家  ›  专栏  ›  技术社区  ›  mike nelson

IIS7上的经典ASP:无法打开ADodb.stream错误文件-正在Webroot外部访问

  •  0
  • mike nelson  · 技术社区  · 15 年前

    我刚刚重新安装了一台服务器,它是一台新机器,同一个OS Verion(Win2008)和同一个IIS版本(7.0)。应用程序运行得很好(然后机器爆炸了)。

    当我尝试访问webroot之外的文件时,出现此错误:

    无法打开ADodb.stream错误“800a0bba”文件

    我可以使用FileSystemObject很好地访问它,但不能使用adodb.stream打开它。

    另外,我可以使用abcpdf创建一个pdf,但是我不能用相同的名称再创建一个并覆盖它(这以前是有效的)。这在网站文件夹结构内工作正常,但在外部不行。

    另外,我不能再使用jmail附加文件了。这适用于webroot内外的文件。所以这很奇怪。

    我已经将完全控制权分配给了整个驱动器中的每个人,以隔离它是否是权限问题,并且没有任何区别。

    有什么想法吗?

    更新: 在站点内附加文件的问题似乎不会再发生了,因为我把一些事情搞得一团糟。不幸的是,我不确定是什么造成的。我对此一无所获,为此浪费了很多时间,所以我最终移动了webroot中的所有文件,现在一切都正常了。这是不理想的,我仍然想达到它的底部,但变通方法是可以接受的。

    更新了问题,因为我不小心写了Win2003而不是2008。

    3 回复  |  直到 12 年前
        1
  •  1
  •   Bismark Atta Frimpong    12 年前

    我认为您应该首先从数据库中检查如何保存有问题的PDF文件。这是您从同一台计算机或远程计算机将相关文件保存到数据库中的位置。通常,当您从同一个开发人员计算机保存文件并且正在访问时,不会出现错误,但是当文件是从开发人员计算机以外的计算机保存时,就会出现这样的错误。

    例如:

    '1. dbSignatureImage = New ADODB.Stream
    '2. dbSignatureImage.Type = ADODB.StreamTypeEnum.adTypeBinary
    '3. dbSignatureImage.Open()
    '4. dbSignatureImage.
    
    LoadFromFile(dbRecordSet.Fields("client_signature_filename").Value)
    

    从上面的代码中,我试图显示数据库中的两个不同的图像(一次一个),在这两个图像中,我直接从开发人员机器中保存了一个图像,而另一个图像是通过我的网络从不同的PC中保存的。每当我试图显示从网络PC上保存的第二个图像时,就会出现文件无法打开的错误。现在我所做的是评论第4行,错误被捕获,但图像没有显示,所以我尝试使用IO.MemoryStream和以下代码直接从blob字段显示图像本身,它对开发人员计算机和网络上的任何PC都可以正常工作。

    Dim PassportImageArray() As Byte = CType(dbRecordSet.Fields("client_passport_image").Value, Byte())
    Dim SignatureImageArray() As Byte = CType(dbRecordSet.Fields("client_signature_image").Value, Byte())
    
    Dim PassportImageMemoryStream As New MemoryStream(PassportImageArray)
    Dim SignatureImageMemoryStream As New MemoryStream(SignatureImageArray)
    
    With picSearchPhotograph
    .Image = Image.FromStream(PassportImageMemoryStream)
    .SizeMode = PictureBoxSizeMode.StretchImage
    .BorderStyle = BorderStyle.None
    End With
    

    我想你可以用这个我的小主意来解决你的问题。我希望你能做些什么。

    卡萨帕萨尼亚尼

        2
  •  0
  •   AnthonyWJones    15 年前

    您可能需要仔细查看应用程序主文件夹以外文件夹的安全权限。还可以查看实际用于运行代码的用户标识,例如,是否打开了Windows集成安全性?如果不是,上一个服务器的情况是否如此?

    如果我们能确定这是否真的是一个iis7问题,这可能会有所帮助,在这种情况下,您的服务器是2008而不是2003。你也可能会发现这类事情最好由 serverfault.com 人。

        3
  •  0
  •   mike nelson    13 年前

    在站点内附加文件的问题似乎不会再发生了,因为我把一些事情搞得一团糟。不幸的是,我不确定是什么造成的。我对此一无所获,为此浪费了很多时间,所以我最终移动了webroot中的所有文件,现在一切都正常了。这是不理想的,我仍然想达到它的底部,但变通方法是可以接受的。