2016-11-16 11 views
0

私はasp.net mvc 5アプリケーションでNLayeringを実装しようとしており、アプリケーションを別のレイヤー(データアクセスレイヤー(DAL))に分けています。 DALのInsertメソッドで接続文字列にアクセスしようとすると、NullReferenceExceptionが発生します。私はSystem.ConfigurationリファレンスをDALプロジェクトとffコードを含むweb.configファイルに追加しました。web.configからconnectionstringを取得しようとするとNullReferenceExceptionがスローされます

web.configファイル

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <connectionStrings> 
<add name="JcSpaceConnectionString" connectionString="Data Source=localhost;Initial Catalog=JcSpaceDatabase;Integrated Security=True;" providerName="System.Data.SqlClient" /> 
</connectionStrings> 
</configuration> 

JcSpaceDAL.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Configuration; 
using System.Data.SqlClient; 
using System.Data; 
using JcSpaceEntities; 

namespace JcSpaceDAL 
{ 
    public class JcSpaceDAL 
    { 

     public static void Insert(JcSpaceAccount accountInfo) 
     { 
      string connectionString = ConfigurationManager.ConnectionStrings["JcSpaceConnectionString"].ConnectionString;//This line causes the nullreferenceexception 
      SqlConnection conn; 
      SqlCommand cmd; 
      using (conn = new SqlConnection(connectionString)) 
      using (cmd = new SqlCommand("spInsert")) { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.AddWithValue("@Name", accountInfo.FirstName.ToString()+""+ accountInfo.LastName.ToString()); 
       cmd.Parameters.AddWithValue("@Email", accountInfo.Email); 
       cmd.Parameters.AddWithValue("@DateOfBirth", acco untInfo.DateOfBirth); 
       cmd.ExecuteNonQuery(); 
      } 


     } 
    } 
} 

なぜそれがこれを引き起こしていますか?

+0

mvcプロジェクトweb.configにも同じ接続文字列セクションが必要です – Damith

+0

**ログをデバッグ/追加する必要があります**。 –

答えて

1

間違ったweb.configファイルにJcSpaceConnectionStringを追加したと思います。 web.configファイルをDALプロジェクトに追加しましたか?その場合は、代わりにMVCプロジェクトに移動する必要があります。

+0

どうやら私はしました。 :)それは今働いています。現在、私はInsertメソッドをアクションメソッドで呼び出しています。私がビジネスロジック層で呼び出されるように変更したら、BLLプロジェクトに接続文字列を追加する必要がありますか? –

+0

接続文字列が必要な唯一の場所はWebプロジェクトです。 (接続文字列を置く必要がある唯一の場所は、.edmxファイルの場所など、エンティティフレームワークを使用する別のプロジェクトですが、Visual Studioはこれを自動的に行います..これは、開発中にエンティティフレームワークウィザードを使用しています)。 – Rocklan

関連する問題