ASP.NET 2.0アプリケーションの接続文字列に問題があります。 ConnectionStringプロパティが初期化されていない場合があるランダムかつ断続的に何らかの理由で発生する問題。ASP.NET接続文字列
マイ・コネクション・ストリングは実際にはWebサービスから来ています。なぜなら、さまざまな種類のユーザーに、ユーザー・レベルに応じて異なる接続文字列が用意されているからです。
私は、マスターページ(mstr.page
)と後ろの対応するコード(mstr.page.vb
)を持っている:私はこのように書き、これまで行ってきた何
。私のマスターページで
、私はからパブリック共有機能を使用して、つまりは今
Session("ConnString") = "RetrievedConnectionString"
私のページのいずれかで、私たちはpage1.aspx.vb
を言わせて、最初に接続文字列を取得し、セッション変数に同じを保存します(MyClass.vb
という名前の)クラスを使用し、それを私のpage1.aspx.vb
に使用してください。参照用
いくつかのコード:
[MyClass.vb]
Imports System.Web
NameSpace ClassNameSpace
Public Class Admin
Protected Shared da as New DataAccess()
Public Shared Function MYFunction() as String
'Execute some sql statements here, using the DataAccess
stringToReturn = Ctype(da.ExecuteScalar("SQLCommand"), String)
Return stringToReturn
End Function
End Class
End NameSpace
[DataAccessClass.vb]
Public Class DataAccess()
Private m_ConStr As String = ""
Public Sub New()
m_ConStr = HttpContext.Current.Session("ConnString")
End Sub
'Some methods for SQL statement execution (ExecuteQuery, ExecuteScalar)
End Class
[Page1.aspx.vb]
Imports ClassNameSpace
Protected Sub Page_Load(....) Handles Me.Load
Dim strValue as String = Admin.MyFunction()
End Sub
私はあなたに物事が起こっているかのいくつかの大まかなアイデアを示すために、上記のコードを配置しています。
基本的には、データアクセスクラスでは接続文字列の値が失われているように見えるため、関数Admin.MyFunction()
が失敗することがあります。
これはすでにかなりの間私に困っています。
私は誰かが正しい方向にこれを解決するために私を指すことができることを願っています。基本的には、Webアプリケーションを訪問している各ユーザーが取得した接続文字列を常に維持し、どこでも使用できるようにしたいと考えています。セッション変数は、ASP.NETがそのプロセスをリサイクルするときにセッションが失われるため、最適ではないようです。
ところで、私は最初にWebサービスからマスターページを介して接続文字列を取得しています。私は、条件がセッション変数が失われているが、私のアプリケーションがリサイクルプロセス中にWebサービスに接続できないと思うときに、データアクセスクラスに同じ検索機能を配置しようとしました。
アドバイスはありがとうございます。この上
更新:
私は、セッション変数を使用し、状態サーバーにモードを設定しようとしましたが、どうやら私が使用していますいくつかのDLLは、私は振り出しに戻っていますので、シリアライズすることはできません。
これを行うより良い方法はありますか?
私は前に、接続文字列の値を取得するセッション変数をチェックします。 NullまたはNothingまたはEmptyの場合、Webサービスから接続文字列を再度取得しようとしますが、リサイクルが進行中であるためWebサービスにもアクセスできません。 – Batuta