IISに発行したWebアプリからSQLServerにデータの登録・更新ができるようにしたいです。
以下の環境で、Webアプリを開発しています。
開発環境:Visual Studio 2019(ASP.NET使用)
データベース:SQLServer
■問題
IISに発行したWebアプリを起動して操作すると、データの登録・更新時にのみSQLServerにうまく接続ができないのか、ページがずっと読み込み状態になってしまいます。
データベースを確認したところ、データが問題なく登録されている場合と、されていない場合がありました。
データの読み込みと削除時はこのようなことは起きず、問題なく動いていることが確認できています。
しかし、デバッグ時にはデータの登録・更新も問題無く実行できていました。
IISに発行したWebアプリだけが、一部SQLがうまく動かないといった問題が起きています。
また、一度データベースとの接続がうまくいかないことでページがずっと読み込み中になってしまうと、今度はWebアプリの起動すらできなくなってしまいます。
エラーメッセージは出ないので原因がわからない状態です。
以下に、Select文とInsert文を記載します。
SQLへの接続ソースコード
C#
1/// <summary> 2 /// 冷蔵庫のアイテムIDの最大値を取得する 3 /// </summary> 4 /// <returns></returns> 5 public int GetMaxId() 6 { 7 string strSelect = "SELECT MAX(ItemId) as ItemId FROM RefrigeratorItem"; 8 9 int intItemId = 0; 10 11 using (var con = new SqlConnection(strCon)) 12 { 13 using (var strSQL = new SqlCommand(strSelect, con)) 14 { 15 try 16 { 17 con.Open(); 18 SqlDataReader sdr = strSQL.ExecuteReader(); 19 20 while (sdr.Read() == true) 21 { 22 intItemId = (int)sdr["ItemId"]; 23 } 24 25 return intItemId; 26 } 27 catch (Exception error) 28 { 29 MessageBox.Show(error.Message); 30 return intItemId; 31 } 32 finally 33 { 34 con.Close(); 35 } 36 } 37 38 } 39 } 40 41/// <summary> 42 /// 冷蔵庫のアイテムを一覧に追加する 43 /// </summary> 44 public void InsertRefrigeratorItem(RefrigeratorItem_Dto input) 45 { 46 string strInsert = "INSERT INTO RefrigeratorItem values(@p1, @p2, @p3, @p4)"; 47 SqlParameter p1; 48 SqlParameter p2; 49 SqlParameter p3; 50 SqlParameter p4; 51 52 using (var con = new SqlConnection(strCon)) 53 { 54 using (var strSQL = new SqlCommand(strInsert, con)) 55 { 56 p1 = strSQL.Parameters.Add("@p1", SqlDbType.Int); 57 p1.Value = GetMaxId() + 1; 58 59 p2 = strSQL.Parameters.Add("@p2", SqlDbType.NVarChar, 50); 60 p2.Value = input.ItemName; 61 62 p3 = strSQL.Parameters.Add("@p3", SqlDbType.DateTime); 63 p3.Value = input.BestByDate; 64 65 p4 = strSQL.Parameters.Add("@p4", SqlDbType.Int); 66 p4.Value = input.Quantity; 67 68 try 69 { 70 con.Open(); 71 strSQL.ExecuteNonQuery(); 72 73 } 74 catch (Exception error) 75 { 76 MessageBox.Show(error.Message); 77 } 78 finally 79 { 80 con.Close(); 81 } 82 } 83 } 84 }
試したこと
SQLServerへの接続方法に、Windows認証とSQLServer認証のどちらも試したのですがうまくいきませんでした。
ページの読み込み時に、SELECT文でデータを取得してきてページに表示するのですが、それは問題無くできているのでデータベースへの接続はできているのか、できていないのか分からない状態です。
初めて質問させていただいたので、足りていない情報等があれば教えていただきたいです。
1人でずっと悩んでいて限界を感じたので質問させていただきました。
よろしくお願いいたします。
あなたの回答
tips
プレビュー