创建新位图时参数无效错误

时间:2011-10-03 15:02:35

标签: asp.net image bitmap

我正在我的页面上显示图像,然后尝试找到图像的当前高度,以便垂直放置它们。我这样做是通过创建一个新的位图,然后获得位图的高度,如下所示:

Dim sampleImg As New System.Drawing.Bitmap(Server.MapPath(String.Format("/Uploads/Products/Images/w100h100/{0}", e.Item.DataItem("Filename"))))
Dim imgHeight As Integer = sampleImg.Height

当我在本地机器上运行时,一切正常。但是,我最近将该网站上传到我的开发服务器,当我从那里运行相同的代码时,我收到此错误消息:

  

参数无效

我一直在寻找论坛试图找到一个解决方案,但我最后有点不确定在哪里看,因为该文件肯定存在于开发服务器上,并且代码在我的本地机器上工作正常。我正在使用的服务器是一个VPS,我是一个初学者,使用服务器,所以我不知道是否有任何我没有设置的东西阻止它工作?

在尝试寻找解决方案时,我也尝试了以下代码,但收到了System.IO.FileNotFoundException错误消息:

Dim sampleImg As System.Drawing.Image = System.Drawing.Image.FromFile(Server.MapPath(String.Format("/Uploads/Products/Images/w100h100/{0}", e.Item.DataItem("Filename"))))

我想知道是否有人可以帮助我找到解决方案,或者是否有不同的方法来实现同样的目标?

非常感谢所有帮助。感谢。

3 个答案:

答案 0 :(得分:2)

这可能是文件权限问题,您需要确保您网站的IUSR帐户具有对图像文件的读取权限。要做到这一点 -

单击文件,属性,选择“安全”选项卡 - 您将拥有一个有权访问该文件的用户列表。快速检查是添加具有读取权限的“Everyone”。要将其锁定到ASP.Net实例,只应启动IIS管理器,然后单击您的应用程序池,并且Identity是您的应用程序运行的用户。

答案 1 :(得分:1)

如果您正在通过IIS运行,则可能是该站点的可用MIME类型中未设置文件类型。

http://technet.microsoft.com/en-us/library/bb742440.aspx

使用IIS7,每个站点都有一个名为“MIME类型”的模块。检查文件扩展名是否在列表中,如果没有,请添加相应的MIME类型(上面链接中的mime类型列表)

答案 2 :(得分:0)

我认为您必须使用~ root运算符来解决路径问题。

Dim sampleImg As System.Drawing.Image = 
          System.Drawing.Image.FromFile(Server.MapPath(
          String.Format("~/Uploads/Products/Images/w100h100/{0}", 
          e.Item.DataItem("Filename"))))

或指定的文件不是有效的图像文件。