0

MVC プロジェクトの 1 つで問題に直面しています。その問題は、Application State オブジェクトから値を取得することに関するものです。

Application_Start()次の方法で、アプリケーションの状態に値を格納していGlobal.axas.csます。

//var str = Obj.DecryptString(ConfigurationManager.ConnectionStrings["ConStr"].ToString());
//Application["connString"] = str;

Application["connString"] = Obj.DecryptString(ConfigurationManager.ConnectionStrings["ConStr"].ToString());

web.configデバッグを通じて、この時点でからの値が正常に取得されていることを確認しました。

このステップの後、私はこの方法で私のいずれかでこの値を取得しようとしていますModel Class:

var conn = new SqlConnection(Application["connString"].ToString());

しかし、ここで私はNullReferenceException Object reference not set to an instance of an object.

ここで、値が正常に取得されて保存されたAapplicationState場合Application_Start()、モデルクラスで使用できないのはなぜですか? アプリケーション全体で ApplciatiopnSate を使用できないのでしょうか?

4

1 に答える 1

0

私の提案は、接続文字列を Application 変数に保持しないことです。代わりに、接続文字列を返すことができる静的メソッドを宣言できます。以下に示すように、接続文字列を静的変数に格納します

public class Utility
{
    static string connectionString;    
    public static string GetConnectionString()
    {
        if(string.IsNullOrEmpty(connectionString))
            connectionString = Obj.DecryptString(ConfigurationManager.ConnectionStrings["ConStr"].ToString());
        return connectionString;
    }
}

構成ファイルはキャッシュされるため、メソッドが呼び出されるたびにファイルを読み取るパフォーマンスについて心配する必要はありません。

于 2012-11-15T12:30:12.377 に答える