2011-10-03 45 views
1

我在我的頁面上顯示圖像,然後嘗試查找圖像的當前高度以便垂直放置它們。我通過創建一個新的位圖,然後讓該位圖的高度做這個,具體如下:創建新位圖時參數無效錯誤

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")))) 

我想知道如果有人能幫助我找到解決這個,或者是有一個不同的方法來達到同樣的目的?

所有幫助非常感謝。謝謝。

+2

調試時,完整路徑是否與圖像的實際完整路徑相匹配?例如,你是否嘗試將其複製/粘貼到Windows資源管理器中,並返回圖像? – Curt

+0

感謝您的幫助 - 是的,我已經嘗試過,所以我知道該圖像確實存在於該位置。 – Leah

回答

2

它可能是文件權限問題,您需要確保IUSR帳戶爲您的網站有讀取權限的圖像文件。要做到這一點 -

R - 單擊文件,屬性,選擇「安全」選項卡 - 您將有一個有權訪問該文件的用戶列表。快速檢查是添加「每個人」閱讀特權。要將其鎖定到ASP.Net實例,只需啓動IIS管理器,右鍵單擊您的應用程序池,並且身份是您的應用程序運行的用戶。

0

我認爲你必須使用~根操作符來解決路徑問題。

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

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

+0

感謝您的建議 - 不幸的是這並沒有任何區別,我仍然得到相同的錯誤信息。 – Leah

+0

@Leah:在部分代碼執行之後是否處理所有圖像對象?編寫一個小代碼並測試/運行在開發服務器上發生的事情。 – adatapost

+0

我最初並沒有處理Image對象,但現在我已經添加了一些代碼來處理使用它之後的對象。這不幸的是仍然沒有在開發服務器上有任何區別,並且我仍然收到System.IO.FileNotFoundException錯誤消息。 – Leah

1

如果您正在運行IIS,則可能是文件類型未在網站的可用MIME類型中設置。

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

隨着IIS7有一個名爲 「MIME類型」 每個網站的模塊。檢查文件擴展名是否在列表中,如果沒有,請將其添加到適當的MIME類型(上面鏈接中的MIME類型列表)

+0

非常感謝您的建議。我剛剛檢查過,但所有相關的圖像文件類型都已添加到列表中,因此似乎不是這樣。 – Leah

相關問題