質問: false; } } tb.Rows.Add(dr); } } catch (Exception ex) { //省略 } return View(tb); } ``` ### 試したこと ASP.netでの開発が初めてでデバッグ環境での動作確認しか行えていません。 ### 補足情報(言語/FW/ツール等のバージョンなど) ASP.net MVC5 よろしくお願いいたします。
回答: 今こちら(ここに書いてあること以外は何も知り得ない第三者)から見えている「デバッグ環境」と「リリース版として公開」の違いは: **(1) デバッグ環境** Visual Studio のテンプレートを利用してデフォルトで MVC アプリを作った。 [デバッグの開始(S)]または[デバッグなしで開始(H)]で実行すると、Web サーバーとして IIS Express が立ち上がって web アプリが実行され、質問にアップした上の画像の通り、期待した結果がブラウザ(IE)に表示される。 認証方式は ASP.NET Identity ベースのフォーム認証で、ユーザー情報のストアは Entity Framework Code First の機能を利用して LocalDB に作られている。 **(2) リリース版として公開** 上記「デバッグ環境」でビルドした web アプリを Windows Server の IIS で運用。LocalDB に代えて SQL Server 2012 を利用。 質問にアップした下の画像のように、ヘッダのみで中身が表示されない。 なお、SQL Server にアクセスが必要でないページは問題なく表示される。ログインはできる。(ログインできるというのがちょっと疑わしいですが間違いないですか?) ・・・と理解しています。間違っていたら指摘してください。 「デバッグ環境」と「リリース版として公開」の違いは、簡単に言うと、ワーカープロセスのアカウントと LocalDB / SQL Server だけしか当方からは見えません。 最初はその違いが原因かと思いましたが、上の (2) に書いた状況を見ると、「リリース版として公開」でも Controller / Model / View のプログラムは期待通り動いていて、SQL Server の DB への接続・データの取得は問題ないように見えます。 質問にアップした下の画像の、ヘッダのみで中身が表示されないという結果から、コントローラーの、 ``` //datatableのカラムを作成 tb.Columns.Add(new DataColumn("社員番号", TpStr)); foreach (ApplicationRole role in Manager.Roles) { tb.Columns.Add(new DataColumn(role.Name, Tpbool)); } ``` は期待通り動いていて、SQL Server の DB にアクセスしてロール名は取得できているが、 ``` //ユーザーごとにどの権限を持っているか確認 foreach (var model in models.Users) { var dr = tb.NewRow(); // ・・・中略・・・ } ``` の、models.Users が空でループが回ってないように思えます。ということは、やはり SQL Server の DB の中身に問題がありそうな気がします。 とすると、問題は SQL Server の DB にデータがないということしか考えられないです。 **【追伸】** > > 開発マシンのWEBアプリからSQLserverに接続してのチェックやってみます。 > > > 結果の連絡をお待ちします。 結果が変わらなければ、SQL Server が怪しそう、期待通りの結果(開発環境と同様にユーザー情報も表示される)になれば「リリース版として公開」の web アプリが怪しそうという話になると思われます。