あなたは、セッション内のすべてのサービスコールで1時間作成した接続インスタンスを共有し、作業が完了したときにDisposeConnection()メソッドを呼び出して、接続を配置することができますWCFサービスにInstanceContextMode.PerSessionを使用することができます。
これがあなたを手伝ってくれることを願っています!
例:あなたは現在
[ServiceContract]
public interface IConnectionService
{
[OperationContract]
void InitSqlConnection(string UserName, string passWord);
[OperationContract]
void DisposeSqlConnection();
[OperationContract]
string GetUserAccounts();
[OperationContract]
string GetUserRoles();
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class ConnectionService : IConnectionService
{
SqlConnection connection;
public void InitSqlConnection(string UserName, string passWord)
{
if (connection == default(SqlConnection))
{
connection = new SqlConnection(string.Format("Data Source=.;Initial Catalog=WADB;User Id={0};Password={1};", UserName, passWord));
connection.Open();
}
}
public void DisposeSqlConnection()
{
if (connection != default(SqlConnection))
{
connection.Close();
connection.Dispose();
}
}
public string GetUserAccounts()
{
string data = string.Empty;
if (connection != default(SqlConnection))
{
//// do database operation with "connection"
SqlDataAdapter da = new SqlDataAdapter("select * from tblUserAccount", connection);
DataSet ds = new DataSet();
da.Fill(ds);
data = ds.GetXml();
}
return data;
}
public string GetUserRoles()
{
string data = string.Empty;
if (connection != default(SqlConnection))
{
//// do database operation with "connection"
SqlDataAdapter da = new SqlDataAdapter("select * from tblUserRole", connection);
DataSet ds = new DataSet();
da.Fill(ds);
data = ds.GetXml();
}
return data;
}
}
どのような認証方式を使用していますか? –
フォーム認証とユーザーを検証するWCFサービスで、このサービスは固定データベースの使用を唯一使用します。 – Snahider
解決策を実装できますか? –