Iis 7 IIS7上的经典ASP:ADODB.Stream错误文件无法打开-在webroot外部访问

Iis 7 IIS7上的经典ASP:ADODB.Stream错误文件无法打开-在webroot外部访问,iis-7,asp-classic,stream,ado,Iis 7,Asp Classic,Stream,Ado,我刚刚重新安装了一台服务器,它是一台新机器,同样的OS verion(Win2008)和IIS版本(7.0)。应用程序运行得很好(然后机器就坏了) 当我尝试访问webroot之外的文件时,出现以下错误: ADODB.Stream错误“800a0bba”文件无法打开 我可以使用FileSystemObject很好地访问它,但无法使用ADODB.Stream打开它 此外,我可以使用abcPDF创建PDF,但我不能使用相同的名称再次创建PDF并覆盖它(这过去是有效的)。这在网站文件夹结构内部可以很好地

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

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

ADODB.Stream错误“800a0bba”文件无法打开

我可以使用FileSystemObject很好地访问它,但无法使用ADODB.Stream打开它

此外,我可以使用abcPDF创建PDF,但我不能使用相同的名称再次创建PDF并覆盖它(这过去是有效的)。这在网站文件夹结构内部可以很好地工作,但在外部不行

而且,我不能再使用JMail附加文件了。这适用于webroot内部和外部的文件。所以这很奇怪

我已将完全控制权分配给整个驱动器上的每个人,以确定这是否是权限问题,并且没有任何区别

有什么想法吗

更新:在网站内附加文件的问题似乎不再发生,因为我在几件事上搞砸了。不幸的是,我不知道是什么原因造成的。我在这件事上无所作为,浪费了好几个小时,所以我最终把所有文件都放到了webroot中,现在一切都正常了。这是不理想的,我仍然希望得到它的底部,但解决办法是可以接受的


更新了问题,因为我无意中编写了Win2003而不是2008。

您可能需要仔细查看应用程序主文件夹外文件夹的安全权限。还可以查看运行代码时实际使用的用户标识,例如,您是否启用了windows集成安全性?如果不是,前一台服务器是否也是这样


如果我们能够确定这是否真的是一个IIS7问题,那么可能会有所帮助,在这种情况下,您的服务器是2008而不是2003。你可能还会发现,这类事情最好由人来处理。

在网站内附加文件的问题似乎不再发生,因为我处理了好几件事。不幸的是,我不知道是什么原因造成的。我在这件事上无所作为,浪费了好几个小时,所以我最终把所有文件都放到了webroot中,现在一切都正常了。这并不理想,我仍然想弄清它的底细,但解决方法是可以接受的。

我认为您应该首先从数据库中检查如何保存有问题的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
我想你可以用我的这个小主意来解决你的问题。我希望它能给你一些帮助


Kasapa Sunyani

Windows 2003/IIS6或Windows 2008/IIS7哪个?无法配置Windows 2003/IIS7。是的,您是对的。这是Windows 2008,抱歉。这是Win2008+IIS7。如何检查windows集成安全性?