質問者
別のプロセスで使用されているため、プロセスはファイル○○○にアクセスできない!

質問
-
Visual Studio 2005でWebアプリを開発しております。
画像ファイルをFileUploadコントロールを利用してサーバーにアップロードして、その画像ファイルを 一旦'c:\inetpub\wwwroot\ps\upload\hoge.jpg' に格納してからImage.FromFileで画像ファイルを読み込んで画像サイズを変更し、変更した画像データをSQLデータベースに格納する処理をしておりますが、最初の1回はできるのですが、2回目以降、下記のエラーメッセージが表示され処理不能となります。
どなたか回避策をご教授ください。
-------エラーメッセージ---------------
別のプロセスで使用されているため、プロセスはファイル 'c:\inetpub\wwwroot\ps\upload\hoge.jpg' にアクセスできません。
説明: 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。例外の詳細: System.IO.IOException: 別のプロセスで使用されているため、プロセスはファイル 'c:\inetpub\wwwroot\ps\upload\hoge.jpg' にアクセスできません。
ソース エラー:
行 107:
行 108: '=============
行 109: FileUpload1.PostedFile.SaveAs(Server.MapPath("~/upload/" & Session("photo")))
行 110: img1 = Image.FromFile(Server.MapPath("~/upload/" & Session("photo")))ソース ファイル: c:\inetpub\wwwroot\ps\article\article5.aspx.vb 行: 109
-------以下はコードです---------------
Session("pflg") = 0 '写真変更フラグ
Session("photo") = "hoge.jpg"
'-------
If FileUpload1.HasFile Then
Session("pflg") = 1 '写真変更フラグ
Session("photo1") = FileUpload1.FileName'=============
FileUpload1.PostedFile.SaveAs(Server.MapPath("~/upload/" & Session("photo")))
img1 = Image.FromFile(Server.MapPath("~/upload/" & Session("photo")))Dim h As Integer
h = 110 * img1.Height / img1.Width '幅110PX
Dim bmp1 As Bitmap = New Bitmap(img1, 110, h)bmp1.Save(Server.MapPath("~/upload1/" & Session("photo")), ImageFormat.Jpeg)
Dim filename As String = Server.MapPath("~/upload1/" & Session("photo"))Dim fs1 As New FileStream(filename, FileMode.Open, FileAccess.Read)
Dim bs(fs1.Length - 1) As Byte
fs1.Read(bs, 0, bs.Length)fs1.Close()
'=============Dim cns As String = Application("sqlconnectstring")
Dim conn As New SqlConnection(cns)Dim sqlstr1 As String = "UPDATE article1 SET PC写真1=@PC写真1,携帯写真1=@携帯写真1 WHERE (art1id='" & Session("art1id") & "')"
Dim pa1 As New SqlParameter("@PC写真1", FileUpload1.FileBytes)
Dim pa2 As New SqlParameter("@携帯写真1", bs)Dim cmd1 As New SqlCommand(sqlstr1, conn)
cmd1.Parameters.Add(pa1)
cmd1.Parameters.Add(pa2)conn.Open()
Try
cmd1.ExecuteNonQuery()
Catch ex As Exception
Label1.Text = ex.ToString
conn.Close()
Exit Sub
End Try
conn.Close()Image1.Visible = True
Image1.Width = 200
Image1.ImageUrl = "article6.aspx?ptype=1"Image3.Visible = True
'Image3.Width = 110
Image3.ImageUrl = "article6.aspx?ptype=3"End If
'-------