web.configに接続設定を追加するとエラー

このQ&Aのポイント
  • web.configに接続設定を追加すると、開発環境でエラーが発生し、削除すると公開環境でエラーが発生する問題が発生しています。
  • デバッグ環境とデプロイ先(IIS)で接続設定の要求が異なり、プロジェクトがどちらの環境でも動作しない状況です。
  • Web.configに接続設定を追加するとIISで動作し、開発環境ではデバッグが停止するエラーが発生します。解決策を探しています。
回答を見る
  • ベストアンサー

web.config に接続設定を追加するとエラー

お世話になっております。 作業マシン:WINDOWS Server2008 (仮想) 開発ツール:VWD2010(VB) 使用DB:SQLServer2008R2 IIS:作業マシンのIISルート配下 にて、Webアプリを開発しております。 知識としてははここ2週間始めたばかりで、 今現在入門書を参考に仕組みを理解しようとしている所です。 言語よりも環境、インフラの内容で躓く事が多く、 皆様をはじめ、過去の質問にはお世話になる日々です。 タイトルが文字数少なく、内容を簡潔に書ききれていませんが 問題は、 「web.config に接続設定を追加すると、開発環境でエラー。  削除すると公開環境でエラー。」 と言うものです。以下詳細です。 メンバーシップフレームワークを使用し、ログイン画面を作成しております。 プロジェクトの内容は、 [画面] ツールボックスのログイン>Loginで設置しただけのログイン画面login.aspxと ログイン画面から遷移する menu.aspx のみです。 [DB] SQLServerには(Web サイト管理ツールから追加した) ユーザーレコードを持つaspnet_Usersテーブルと、自身で追加したTable1テーブル を含む、デフォルト名のDB、"ASPNETDB.MDF"があります。 [動作] ログインに成功すればmenu.aspx に遷移し、 Table1から参照した表を見るだけの試し用プロジェクトです。 [異常内容] デバッグ環境とデプロイ先(IIS)とで接続設定の要求が異なり、 両方が共通のソースで動かないと言うものです。 プロジェクトは、ログインコントロールの設置で "LocalSqlServer"という接続を持つようになります。 このLocalSqlServerは、Web.configに自動生成はされませんが デバッグ時には問題なく実行されます。 (おそらくどこかに接続=接続文字列情報を持っているのだと思います。) しかし、IISrootにデプロイしますと、フレームワークのconfig, " Framework64\v4.0.30319\config\machine.config" が "LocalSqlServerを見つけられなかったか接続文字列が空です"というエラーを吐きます。 プロジェクトでWeb.Configに接続設定を追加しますと (web.config に <add connectionString = [接続文字列] > を、追加 ) デプロイ時にIISに自動で接続情報が作成されるようになり 運用環境での動作は問題ありませんが、 そのソースを開発環境でデバッグ実行しますと、 "LocalSqlServerはすでに追加されています"というエラーが出て停止します。 まとめますと  "LocalSqlServer"の接続設定がないとIISで動かせない。   しかし接続設定を加えると開発環境でデバッグが動かない。 と言う状況です。「どちらでも動くソース」ができません。 デバッグ時に動く ASP.NET 開発サーバー だけで、 常にLocalSqlServerが有効である状態なのだと思いますが、 このままですとサイトを発行(デプロイ)するたびに Web.configに"LocalSqlServer"の追加操作をしなければならず、 メンバーにそんな説明はとても出来ません。。 この状況を自力で解決出来そうになく、どうかお知恵をおかしください。 よろしくお願いします。 ※ ひとつあたりを付けているのは、この開発環境では 複数のプロジェクトで、同じDB (デフォルトで出来る"ASPNETDB.MDF")を 使っている事です。 他のプロジェクトで"LocalSqlServer"(接続文字列も同じ)を使っているので 他プロジェクトでもデフォルト名のDBを使う場合Web.configに接続設定が不要になり むしろ追加するとエラーになる…などと言うことはあり得ますでしょうか?  (試せればよいのですが、確信なく既存プロジェクトをいじる訳にはいかず、   自宅では異常が再現せず、試せずにいます)

質問者が選んだベストアンサー

  • ベストアンサー
  • onos
  • ベストアンサー率81% (127/155)
回答No.1

> デバッグ時に動く ASP.NET 開発サーバー だけで、 > 常にLocalSqlServerが有効である状態なのだと思いますが、 いえ、この認識があやまりです。 LocalSqlServerの設定は.NET Frameworkのレベルで設定されます。 正確にはmachine.configというファイルで設定されています。 このため、「開発サーバーだけ」で有効ということはなく、運用サーバーでも有効です。 で、web.configは階層的に設定できるようになっているので、上位で設定されているもの (上記の場合LocalSqlServer)を下位で設定しようとすると "LocalSqlServerはすでに追加されています" というエラーが発生します。 ということで、開発環境でLocalSqlServerを追加したときの動作は正しいです。 web.config中で一度LocalSqlServerの設定を削除して追加する、という記述を行えば 正しく動くと思います。 逆に、運用環境ではこのエラーがでないことのほうがおかしいです。 なにか環境の設定が正しくできていないことが考えられます。 wwwrootフォルダにアプリケーションを配置したのだとすると、よくあるフォルダを Webアプリケーションとして設定していない、というミスは起こっていないと 思いますので、あとは正しいフレームワークのバージョン設定ができていない、とかでしょうか。 なんにせよ、web.configの使い方やIISの設定に関する知識を整理されたほうがよいと思います。 メンバーシップを利用する際のweb.config等については2006年当時の資料で最新の状態では ないですが、参照URLの資料も参考にしてみてください。

参考URL:
http://www.slideshare.net/onos/20061125-12872928
wendy0303
質問者

お礼

Onos様 いつも的確な回答と助言をありがとうございます。 認識違いである箇所まで遡り、 再度自分の認識と、現在の環境とを整理しようとおもいます。

関連するQ&A

  • app.configに接続文字列を設定する方法と暗号化について

    Windowsアプリケーションを勉強中です。 app.configにDB接続文字列を設定して暗号化したいのですが、一般的な手順を教えてください。 私は下記のようにやってみたのですが、うまくいきませんでした。 (1)プロジェクトのプロパティのsettingsで接続文字列を入力 (2)ファイル名をweb.configに修正 (3)コマンドプロンプトでaspnet_regiis -pe "ConnectionStrings" –app “/web.configのパス”を実行 これだと、ConnectionStringsが見つかりません。のエラーがでます。configファイルの接続文字列は <ConnectionStrings>セクションはなく<userSettings>に書き込まれています。 と、いうことは(1)のやり方がまずいのでしょうか? どなたか教えてください! よろしくお願い致します。

  • web.configとは?(初心者です)

    Web開発をしております。友人がweb.configの話をするのですが、私はそれは、使っておりません。web.configとは、ASP.NETを使用するときにのみ、使う設定ファイルなのでしょうか? また、ASP.NET開発にて、web.configを使用しないと代替するものってなんなのでしょうか? どうか、教えてください。お願いします。

  • Web.Config でカスタムエラーページの設定をしても通常のエラーページが表示される

    タイトルのとおり、ASP.NETサイトにおいて、 Web.Config でカスタムエラーページの設定をしても通常のエラーページが表示されてしまいます。 何が原因か調べていますが、まだ解決しません。 アドバイスお願いします。 [環境] ・Windows 2003 Server ・IIS6 [Web.Config の内容(抜粋)] <customErrors mode="On" defaultRedirect="myErr.html"/> [補足] Web.Config を置いているのは、 「c:\inetpub\wwwroot\WebApp\App1\Web.Config」 です。その他、このWebアプリで使うファイル(.aspx 等)も同じディレクトリ(App1)内にあります。 それと、一つ上の「WebApp」フォルダ内にもWeb.Config があります。 (こちらのWeb.Config には<customErrors>...<customErrors>タグは記述していません。)

  • .NET FrameworkとIISについて

    .NET Framework4でコンパイルしたプロジェクトを IIS(.NET Framework2)に配置して動かすことはできるのでしょうか? <開発環境> 開発環境:Micrsoft Visual Web Developer 2010 Express OS:Windosw7 Proffesional <実行環境> OS:Windows Server 2008 WEBサーバー:IIS7

  • セッションタイムアウトの設定時間通りにならない

    C#によるWebアプリケーションを開発しています。 セッションタイムアウトの設定を240分としていますが、 240分前にタイムアウトになってしまいます。 設定時間通りにタイムアウトにならない事象が発生しており、 原因を究明しています。 【状況】 Web.configとIISにて、セッションタイムアウトの時間を 設定しております。 (1)Web.configの設定 Web.config内にて、 <sessionState timeout = "240" /> のタグを設けて、セッションタイムアウトの時間を240分としています。 (2)IISの設定 IISにて、アプリケーションの構成の【オプション】タブにて、 「セッションのタイムアウト」を240分としています。 【環境】 OS:Windows Server 2003 Webサーバ:IIS6.0 DBサーバ:SQL Server 2005、 セッションタイムアウトが指定時間に行われない原因について、 ご教授の程お願い致します。

  • ASP.NET開発サーバーを使わずIISを使うには

    お世話になっております。 作業マシン:WINDOWS7 (仮想) VWD2010 を使用VBにてWebアプリケーションを開発しております。 知識としてははここ2週間始めたばかりで、 今現在入門書を参考に仕組みを理解しようとしている所です。 (PG経験はC,PHPで2年程です) 入門書に従い、デフォルトのプロジェクトを作成しそのまま開発を進めますと、 開発中のデバッグ(ASP.NET開発サーバーのアイコンが表示される)は問題無いのですが 作成したプロジェクトからWEBサイトを発行し、 IISのルートフォルダ配下に配置した際 デバッグ時には正常に動いて居たのが、動かなくなります。 原因はIISの設定不足… IISルートフォルダ配下でのNETWORK SERVICEユーザーの実行権限や、 WEBで使用できないMsgboxの使用、接続文字列の不足だったりします。 動作が変るのは ASP.NET開発サーバー を使用するか IIS を使用するかの違いである というのは理解できるのですが、 開発時から公開先と同じWEBサーバー(IIS)を使用する事は出来ないのかと疑問に思っています。 それが出来れば、 「基本デバッグ通れば公開して使える」と言う確信を持って、 作業も学習も進められるのですが… 残念ながらなかなか公開について詳しい記述のあるサイトは見つけられずに居ます。 VWDで、デバッグ>オプション>全般から、 プロジェクトフォルダの配置場所を、wwwroot 直下にしますと プロジェクトフォルダ自体はIISRoot直下ですが、 デバッグ実行時にASP.NET開発サーバーのアイコンがタスクトレイに 表示されますのでやはりIISは使われていない様に思えます。 IIS環境下での開発・デバッグをする方法は無いのでしょうか? ASP.NET開発では配置後の試験・検証・コード修正が必要なのでしょうか? どうかご教授ください。

  • eclipse、Tomcatの設定

    お世話になります。 以前JAVAで開発していたプロジェクトを久々に動かそうと 思、新たにEclipse3.2、Tomcat5.5の環境を構築し、 TomcatのWebappsにWarをデプロイし、起動したのですが、 ブラウザからhttp://localhost:8080/プロジェクト名/index.html にアクセスしても404エラー画面が出力されてしまいます。 index.javaにSystem.outでデバッグしたのですが、 eclipseのコンソール上は何も出力されていないため、 TomcatとStrutsの連携がうまくいってなようです。 以前の設定でTomcatのWeb.xmlとServer.xmlを記述したのですが 何故うまくいかないのかわかりません。 どなたかご存知の方がいましたら教えていただけないでしょうか?

  • 環境の設定について・・・

    どこに書いてよいのかよくわからなかったのでこちらで 質問させていただきます。 現在ASP.netの環境設定を行っています。 IISの設定も終わり仮想ディレクトリ直下に置いた test.htmlが見れることを確認した上で、 ディレクトリのセキュリティにASPNETユーザーを フルコントロールで追加して、 同じ階層にaspxファイルを置いた(開発環境を 同じディレクトリに指定した)のですが 「HTTP エラー 404 - ファイルまたはディレクトリが見つかりません。」 というエラーが出てしまいました。 aspxファイルに何か変換をかけるようなものが必要なのでしょうか? 初歩的な質問で申し訳ありませんが、 よろしくお願いします。 環境は以下の通りになります。 OS:WindowsServer2003 開発ツール:Visual Web Developer 2008 Express Edition IISバージョン:6.0 Framework:2.0 ブラウザ:IE7

  • iアプリでデータベース接続

    はじめまして。 私、現在仕事でiアプリの開発を行うことになりました。今まで、web系の設計・開発の経験がない私としましては不安だらけの状態です。 開発するiアプリの内容は、携帯のiアプリを操作することで、webサーバー上にあるDBの参照や更新を行うものです。 開発環境といたしましては、次のとおりになります。 携帯側 ・Doja4.1 ・J2SE 1.4.2 webサーバー ・Windows2003サーバー ・IIS6.0 ・DBはSQL Server2005 になります。 webサーバーがIISの場合だと、aspやasp.netをイメージしてしまうのですが、Dojaがjava環境の上で動作するということであれば、TOMCATとjavaサーブレットをイメージしてしまいます。 DojaからIISのwebサーバーへ接続し、DBを参照、更新する場合はミドルウェアには何が最適なのでしょうか? また、できれば、使えそうなソースとかも教えてもらえればありがたいです。 当方、ほとんど素人ですので、誠に申し訳ありませんが、 よろしくお願いします。

    • ベストアンサー
    • Java
  • Web.configで指定されているバージョン

    Windows7環境でIIS+ASP.NET(MVC)+mysqlをインストールして 他人から提供してもらったプログラムを動かそうとしています。 上記の指定されたソフトをインストールし実行したところ '/'アプリケーションでサーバエラーが発生しました。 というエラーとなります。 いろいろ調べたところWeb.configファイルで指定しているソウトの バージョンとインストールマシンのソフトのバージョンが違うため エラーとなっていると推測しています。 ■Web.config(Ver4.0.0.0) <add assembly="System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> ■マシン(Ver2.0.0.0) C:\Windows\assembly\System.Security プロパティ 2.0.0.0  上記だけでなくほかにも4.0.0.0と3.5.0.0とかバージョンの違うものがいくつかあります。 C:\Windows\assembly\System.Securityのバージョンを 4.0.0.0にあげるには何をインストールすればよいのか 教えて頂けないでしょうか? Web.configファイルをマシンのバージョンに合わせれば動作可能かもしれませんが 事情がありマシン側のバージョンを合わせる必要があります。 また、IISやASP.NETのプログラム開発の初心者のため 質問内容に不備等ございましたらご了承お願いいたします。 なお、ASP.NETは以下をインストールしました。 http://msdn.microsoft.com/ja-jp/aa570309 Web 開発ダウンロード: ASP.NET and ASP.NET MVC (英語) http://msdn.microsoft.com/ja-jp/asp.net/aa336554 Visual Studio (90 日評価版) Visual Studio 2010 以上です。

専門家に質問してみよう