質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.04%

[ConfigurationErrorsException]: 構成セクションは、CDATA、あるいはテキスト要素を含むことはできません' を解決したい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,712

sky_

score 11

ログイン型の掲示板を作成しています。
開発環境はWindows visual studio 2017 バージョン4.5.2 C#です。
アカウント登録をSQL serverを使って開発しているのですが行き詰ってしまって質問させていただいています。
※visual studio、C#での開発は初めてです。


web.conflgの内容

<connectionStrings>
 <add name="sqlsvr"
    connectionString="Data Source=(LocalDB)\MSSQLLocalDB;
  AttachDBFilename=C:\Users\ikunao\Documents\Visual Studio 2017\WebSites\WebSite1\App_Data\DB.mdf;Integrated Security=false;(.mdfのプロパティにある接続文字列をコピペしたのですができません。
  Integrated Security=false"/>  
 </connectionStrings>

ボタンをクリックしたときのアクション (sqlserverに接続してクエリを追加する処理がしたい)

protected void Unnamed1_Click(object sender, EventArgs e)
    {
        // 接続文字列の取得
        ###var connectionString = ConfigurationManager.ConnectionStrings["sqlsvr"].ConnectionString;
↑で[ConfigurationErrorsException]: 構成セクションは、CDATA、あるいはテキスト要素を含むことはできません' というエラーが発生する

        using (var connection = new SqlConnection(connectionString))
        using (var command = connection.CreateCommand())
        {
            try
            {
                // データベースの接続開始
                connection.Open();

                // SQLの準備
                command.CommandText = @"INSERT INTO Account (Id, Name, Pass) VALUES (@ID, @PASSWORD, @ROLE_NAME)";
                command.Parameters.Add(new SqlParameter("@ID", Id));
                command.Parameters.Add(new SqlParameter("@PASSWORD", Name));
                command.Parameters.Add(new SqlParameter("@ROLE_NAME", Pass));

                // SQLの実行
                command.ExecuteNonQuery();
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.Message);
                throw;
            }
            finally
            {
                // データベースの接続終了
                connection.Close();
            }
            Response.Redirect("./AddNewMemberCheck.aspx");
        }
    }
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • SurferOnWww

    2017/08/27 16:22

    何を作っているかと(コードから Web Forms アプリりではないかと想像はしてますが)、自分の開発環境(OS, ASP.NET, IIS,Visual Studio のバージョン、DB サーバーは何かとそのバージョン、IIS Express を使っているのかローカル IIS なのか、ブラウザは何かなど)を書いてください。質問するときのイロハのイです。

    キャンセル

  • SurferOnWww

    2017/08/27 16:25

    あと、現状の接続文字列をきちんと全部正確に書いてください。「.mdfのプロパティにある接続文字列をコピペした」とか言われても何のことやら分かりません。

    キャンセル

  • sky_

    2017/08/27 17:22

    アドバイスありがとうございます。訂正させていただきました。ブラウザはいつもIEで実行しています。

    キャンセル

回答 2

checkベストアンサー

0

アカウント登録をSQL serverを使って開発しているのですが

接続文字列の Data Source=(LocalDB)\MSSQLLocalDB を見ると SQL Server ではなくて LocalDB のようですが?

あと、IIS Express を使っているのかローカル IIS なのか依然として不明なのですが・・・

多分、SQL Server ではなくて SQL Server 2016 Express LocalDB、Web サーバーは IIS Express であろうと想像してレスします。

接続文字列の、

AttachDBFilename=C:\Users\ikunao\Documents\Visual Studio 2017\WebSites\WebSite1\App_Data\DB.mdf;

から、DB.mdf はプロジェクトの App_Data フォルダにあると思いますが(ソリューションエクスプローラーを見て確認してください)、そうであれば接続文字列は以下のようにすればよいはずです。

<add name="sqlsvr" 
  connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DB.mdf;
    Initial Catalog=<データベース名>;
    Integrated Security=True" 
  providerName="System.Data.SqlClient" />

|DataDirectory| は App_Data フォルダを意味します。

<データベース名> のところは Account が存在するデーターベース名にしてください。

【追伸】

今気が付いたのですが、質問者さんの前のスレッド(同じく掲示板開発とのこと)、

https://teratail.com/questions/88305

を見ると ASP.NET MVC のようですが、このスレッドのコードを見ると ASP.NET Web Forms のようです。

両方をごっちゃにしてメチャクチャなことをしているということはないですよね?

だから何を作っているのか聞いたのですが、その意味が理解いただけてないような感じです。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

AttachDBFilename=に続くファイルパスに空白が含まれていることが原因かと思われます。
以下のように、コーテーションでくくればどうでしょうか。

AttachDBFilename="C:\Users\ikunao\Documents\Visual Studio 2017\WebSites\WebSite1\App_Data\DB.mdf";

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/27 18:35 編集

    ””で囲むと区切りの\がエラーを引き起こしてしまってダメでした。エスケープ処理をすれば解決するかなと思って”の前に\を入れてみたのですが、ダメでした。このエスケープ処理が間違っているのでしょうか?

    キャンセル

  • 2017/08/27 18:39 編集

    connectionString='Data Source=(LocalDB)\MSSQLLocalDB;AttachDBFilename="C:\Users\ikunao\Documents\Visual Studio 2017\WebSites\WebSite1\App_Data\DB.mdf";Integrated Security=false'
    に変更してエラーがなかったのでやってみましたが同じエラーが出ました。

    キャンセル

  • 2017/08/27 19:00

    なるほど、ConnectionStrings全体が囲まれているので、ここを囲む必要はありませんでしたね・・・
    エラーメッセージ的には、接続文字列に記号が含まれていたりする場合には出るようですが、今回は関係なさそうですね。
    こちらの記事を参考に、GUIの力を借りる作戦はどうでしょうか。接続文字列に誤りがあるのであれば、GUIで生成したものに置き換えることで解消しそうな気もします。
    http://blog.clock-up.jp/entry/2016/07/27/vs-sqlserver-localdb

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • トップ
  • C#に関する質問
  • [ConfigurationErrorsException]: 構成セクションは、CDATA、あるいはテキスト要素を含むことはできません' を解決したい