設定ファイルからconnectionStrings
にアクセスしようとしています。コードはASP.NET + C#です。参照にSystem.Configuration
を追加し、usingについても言及しました。しかしそれでも、それは議会を受け入れないでしょう。
私はVSTS 2008を使用しています。何が考えられるのでしょうか。
もう1つの奇妙なことは、 "System.configuration"として表示されるアセンブリ名です。小文字のcは、他のシステムアセンブリの名前の表示方法とは異なります。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
namespace Utility
{
public class CommonVariables
{
public static String ConnectionString
{
get { return ConfigurationManager.ConnectionStrings["EmployeeEntities"].ConnectionString; }
}
}
}
構成:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="qbankEntities" connectionString="metadata=res://*/qbankModel.csdl|res://*/qbankModel.ssdl|res://*/qbankModel.msl;provider=System.Data.SqlClient;provider connection string="Data Source=localhost;Initial Catalog=qbank;Persist Security Info=True;User ID=**;Password=****;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
わかりました..それはVSTSを再起動した後うまくいきました。 link は同じ問題に対する解決策を提案しました。私は前にそれを見たことができればいいのに。 :)
名前空間 System.Configuration
を使用する必要があるだけではありません。また、 Assembly System.Configuration.dll
への参照を追加する必要があります。
System.Configuration
を見つけて追加します。これは確かにうまくいくでしょう。 NameValueCollection
についても書く必要があります:
using System.Collections.Specialized;
プロジェクトで、右クリックします。 [参照の追加...] 、[.NET]タブで、System.Configuration
コンポーネント名を見つけて[OK]をクリックします。
using System.Configuration
は、コンパイラ/ IntelliSenseに、その名前空間で使用するクラスを検索するように指示します。それ以外の場合は、毎回フルネーム(System.Configuration.ConfigurationManager
)を使用する必要があります。しかし、参照を追加しなければ、その名前空間/クラスはどこにも見つかりません。
DLLは任意の名前空間を持つことができるので、ファイルSystem.Configuration.dll
は理論的には名前空間Some.Random.Name
を持つことができます。明確さと一貫性のために、それらは通常同じですが、例外があります。
提案された解決策のどれも私のために働かないので、この答えを追加する。
- 参照を追加するには、参照タブを右クリックします。
- アセンブリタブをクリックします
- 「System.Configuration」を検索してください。
- OKをクリックしてください。
私はconfigurationmanager does not exist in the current context
問題のためのより良い解決策を得ました。
web.config
から接続文字列を読み込むには、ConfigurationManager
クラスとそのメソッドを使用する必要があります。使いたい場合はSystem.Configuration
を使って名前空間を追加する必要があります。
この名前空間を使用しましたが、ConfigurationManager
クラスを使用しようとすると、システムに「configurationmanagerが現在のコンテキストに存在しません」というエラーが表示されます。この問題を解決するために:
ConfigurationManager.ConnectionStrings["ConnectionSql"].ConnectionString;
すべてのプロジェクトへの参照としてSystem.Configuration
を追加することでこれを解決できます。
Project
- > Add Reference
に行きます
表示されたボックスで、左側のリストにあるAll assemblies
リストタブをクリックします。
中央のリストでSystem.Configuration
までスクロールし、ボックスがチェックされていることを確認してください。
[OK]をクリックして適用すると、ConfigurationManager
クラスにアクセスできるようになります。
あなたがたくさんの警告を受けているのなら(私の場合は64個のソリューションで!)
CS0618: 'ConfigurationSettings.AppSettings'は廃止されました: 'このメソッドは廃止されました、System.Configurationに置き換えられました!System.Configuration.ConfigurationManager.AppSettings'
古いプロジェクトをアップグレードしているので、次のように多くの時間を節約できます。
System.Configuration
を追加します。次の2つのusing
ステートメントを各クラス(.cs
)ファイルの先頭に追加します。
using System.Configuration; using ConfigurationSettings = System.Configuration.ConfigurationManager;
これにより、
ConfigurationSettings.AppSettings["mySetting"]
正しい設定マネージャを参照するようになりました。現在は推奨されていませんが、CS0618の警告はすべてすぐに消えます。
もちろん、これは手っ取り早い方法です。長期的には、コードのリファクタリングを検討する必要があります。
.NETアセンブリへの参照を追加しましたか。それ以外のものではありませんか?参照を削除してから再度追加してみてください。必ず、Visual Studioの参照ダイアログの[.NET]タブから選択してください。最新バージョンはGACでは2.0.0.0になります。
健全性チェックのために、新しいWebアプリケーションプロジェクトを作成してみて、Default.aspxページのコードビハインドを開きます。 Page_Loadに1行追加して、接続文字列にアクセスします。
デフォルトでSystem.Configurationが参照として追加されているはずです。また、コードファイルの先頭にusingステートメントがあるはずです。
私のコードビハインドファイルはこのようになり、問題なくコンパイルされます。
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace WebApplication1
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string connString = ConfigurationManager.ConnectionStrings["MyConnectionStringName"].ConnectionString;
}
}
}
これは、私のweb.configに "MyConnectionStringName"と同じ名前の接続文字列があると仮定しています...
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="MyConnectionStringName"
connectionString="Data Source=.;Initial Catalog=MyDatabase;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
ええ、それは私が知っている小学校です。あなたがより良いアイデアを持っていない場合でも、時にはそれはあなたが働くべきであることを知っていることを本当に簡単なものに対してチェックするのに役立ちます。
今あなたはできる:
using System.Configuration;
このコードが図書館プロジェクトのように別のプロジェクトにある場合。 system.configurationへの参照を追加することを忘れないでください。
誤って関連のない別のプロジェクトへの参照を追加した場合も、このエラーが発生する可能性があります。それがあなたに当てはまるかどうか確認してください。
この問題を解決するには、ソリューションエクスプローラーに移動し、参照を右クリックして[参照の追加]をクリックし、.netを選択してsystem.configurationをクリックし、[OK]をクリックします。