2013年11月13日水曜日

ASP.NET C# SQLServer の関連で困ったところ ~開発サーバからIISサーバ使用へ~

ASP.NETをさわってみたくて、さわってみました。
ロジック部分はC#で書きました。
SQLServerへのDB接続をしてなんかする、という単純動作です。

実際に「IIS」を利用してみようと思ったのですが、一筋縄にいかなかったので
記録しておきます。

【内容】
開発サーバからIISサーバを使用しようとした際にうまくいかなかった点の記録

【環境】
OS : Windows7 Home Premium
DB : SQL Server 2008 R2 ('Microsoft SQL Server Express Edition (64-bit))
開発 : Microsoft Visual Studio 2010 (Microsoft Visual Web Developer 2010)

まずは、IISを有効化、設定などして、

Visual Studioから、
「開始動作」は「ページを指定する」で一番初めに表示する「aspx」ファイルを記述しました。
「サーバー」は「IIS Web サーバーの使用」を選択しました。

そして緑三角ボタン(デバッグ開始)をクリックしました。

「HTTP エラー 500.21
ハンドラー "PageHandlerFactory-Integrated" のモジュール リストにあるモジュール "ManagedPipelineHandler" が正しくありません」

という訳のわからないエラーが表示されました。
調べると、ASP .NET4.0がインストールされていないだけらしいです。
使用している.NETが3.5等の場合は起きないエラーだと思います。

管理者権限コマンドプロンプトから
「C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i」
を実行してインストール完了です。
「aspnet_regiis.exe」は登録ツールです。
「-i」はインストールのオプションです。



 さて、改めて緑三角ボタン(デバッグ開始)をクリックしました。

むー?><



このログインで要求されたデータベース "TosDb" を開けません。ログインに失敗しました。
ユーザー 'IIS APPPOOL\DefaultAppPool ' はログインできませんでした。

という訳のわからないエラーが表示されました。

色々調べると色々出てきすぎて、よくわかりませんでした。
これをするといい、あれをするといいetc。。。

シンプルだと思った方法を選択。
それは、エラーの内容のまんまを対応することでしたw

「Microsoft SQL Server Management Studio」から、
[DB名]-[セキュリティ]-[ユーザー]を右クリックし、「新しいユーザー」を選択します。



・「ユーザー名」「ログイン名」に「IIS APPPOOL\DefaultAppPool」を記述します。

・「データベース ロールのメンバーシップ」で「db_owner」にチェックをつけます。
・「OK」ボタンをクリックします。

最後に「IIS」の認証設定をします。



「認証」項目で、「匿名認証」を右クリックし、「編集」を選択します。
「アプリケーション プール ID」を選択し、「OK」ボタンをクリックします。

緑三角ボタン(デバッグ開始)をクリックすると正常にDB接続もできました。

※ログインできませんでしたエラーで

ユーザー 'IIS APPPOOL\ASP.NET v4.0 ' はログインできませんでした。

の時もありました。
その時も、上記同様に「そのまんま」ユーザーを追加してあげれば大丈夫でした。

0 件のコメント:

コメントを投稿