2011-10-03 13 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アカウントあなたのサイトはイメージファイルへの読み取りアクセス権を持っています。これを行うには -

ファイルを右クリックし、[プロパティ]を選択し、[セキュリティ]タブを選択します。ファイルにアクセスできるユーザーの一覧が表示されます。クイックチェックは、「Everyone」に読み取り権限を追加することです。それをASP.Netインスタンスにロックしたままにするには、IISマネージャーを起動し、アプリケーションプールを右クリックし、IDはアプリケーションが実行されるユーザーである必要があります。

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タイプに設定されていない可能性があります。 IIS7で

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

"MIMEタイプ" と呼ばれる各サイトのためのモジュールがあります。ファイル拡張子がリストに含まれているかどうかを確認し、そうでない場合は、適切なMIMEタイプ(上記のリンクのMIMEタイプのリスト)を追加してください。

+0

提案に感謝します。私はちょうどチェックしたが、関連するすべてのイメージファイルタイプはすでにリストに追加されているので、そうではないようです。 – Leah

関連する問題