我刚刚重新安装了一台服务器,它是一台新机器,同样的OS版本(Win2008)和相同的IIS版本(7.0)。该应用程序运行正常(然后机器爆炸)。
当我尝试访问webroot之外的文件时,我收到此错误:
ADODB.Stream错误'800a0bba'文件无法打开
我可以使用FileSystemObject轻松访问它,但无法使用ADODB.Stream打开它。
另外,我可以使用abcPDF创建一个PDF,但是我不能再使用相同的名称创建一个PDF并覆盖它(这曾经用过)。这在网站文件夹结构中工作正常但不在外面。
另外,我无法再使用JMail附加文件了。这适用于webroot内部和外部的文件。所以这很奇怪。
我已经在整个驱动器上为每个人分配了完全控制权,以确定它是否是权限问题,并且没有任何区别。
任何想法?
更新:在网站中附加文件的问题似乎不再发生,因为我在几处乱七八糟。不幸的是,我不确定是什么。我无处可去,因此失去了几个小时,所以我最终移动了webroot中的所有文件,现在一切正常。这并不理想,我仍然想深究它,但解决方法是可以接受的。
更新了问题,因为我不小心写了Win2003而不是2008。
答案 0 :(得分:1)
我认为您应该首先从数据库中检查如何保存相关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-苏尼亚尼
答案 1 :(得分:0)
您可能需要仔细查看应用程序主文件夹外部文件夹的安全权限。另请查看实际用于运行代码的用户身份,例如,您是否已启用Windows集成安全性?如果没有,那么以前的服务器是真的吗?
如果我们能够确定这是否真的是IIS7问题,这可能会有所帮助。在这种情况下,您的服务器是2008而不是2003.您可能还会发现这类事情最好由serverfault.com人处理。
答案 2 :(得分:0)
在网站中附加文件的问题似乎不再发生,因为我用几件东西搞得一团糟。不幸的是,我不确定是什么。我无处可去,因此失去了几个小时,所以我最终移动了webroot中的所有文件,现在一切正常。这并不理想,我仍然想深究它,但解决方法是可以接受的。